如何停止下一个补间动作开始,直到前一个补间完成在 as3.0 中播放?
而且我想阻止补间在同一个对象上发生两次。
基本上我有一个容器(电影剪辑),其中有 n 个电影剪辑(排列为砖)。当我单击容器时,目标(砖)将消失(将 scaleX 和 alpha 设为“o”)。我也在跟踪关闭了多少砖。
但问题是,如果我快速双击,补间似乎会发生两次。对于同一块砖,计数似乎也增加了。如何解决这个问题呢。
如何停止下一个补间动作开始,直到前一个补间完成在 as3.0 中播放?
而且我想阻止补间在同一个对象上发生两次。
基本上我有一个容器(电影剪辑),其中有 n 个电影剪辑(排列为砖)。当我单击容器时,目标(砖)将消失(将 scaleX 和 alpha 设为“o”)。我也在跟踪关闭了多少砖。
但问题是,如果我快速双击,补间似乎会发生两次。对于同一块砖,计数似乎也增加了。如何解决这个问题呢。
补间后补间
使用事件处理程序等待第一个补间完成,例如
myTween.addEventListener(TweenEvent.MOTION_FINISH, onFinish);
function onFinish(e:TweenEvent):void {
... // Call the next tween here
}
单击按钮后立即删除按钮单击的事件侦听器,例如:
my_btn.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent){
my_btn.removeEventListener(MouseEvent.CLICK, onClick);
myTween.start();
}
您使用 Tweener 的任何原因。如今,Greensock 的 Tweenmax/lite 软件包似乎已成为行业标准。
您似乎遇到的问题是您多次启动补间。如果所有块都需要同时收缩,我可能会使用 for 循环并在每个块上运行补间。
但是,您必须确保的是,一旦单击它就可以删除单击事件处理程序,直到它完成,这样就不会再次单击它。
我还建议使用 TweenMax/Lite,因为它有一个叫做 TimelineMax/Lite 的东西,您可以在其中复合一堆补间,无论是同时还是交错,并在该 Timeline 对象上侦听一个 COMPLETE 事件。当该事件触发时,您可以重新激活点击或在动画完成后执行您需要执行的任何操作。
TimelineMax 具有一些不错的功能,例如 reverse 和 timeScale。
你能粘贴一些代码吗?这也将帮助我们帮助您。
您可以使用Tweener并使用
isTweening()
或autoOverwrite = false
解决这个问题。
我已经有一段时间没有使用这些属性/函数了,但我确信 Tweener 中的某些东西可以轻松做到这一点。