0

如何停止下一个补间动作开始,直到前一个补间完成在 as3.0 中播放?

而且我想阻止补间在同一个对象上发生两次。

基本上我有一个容器(电影剪辑),其中有 n 个电影剪辑(排列为砖)。当我单击容器时,目标(砖)将消失(将 scaleX 和 alpha 设为“o”)。我也在跟踪关闭了多少砖。

但问题是,如果我快速双击,补间似乎会发生两次。对于同一块砖,计数似乎也增加了。如何解决这个问题呢。

4

3 回答 3

1

补间后补间

使用事件处理程序等待第一个补间完成,例如

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();

}
于 2012-04-12T12:44:58.820 回答
0

您使用 Tweener 的任何原因。如今,Greensock 的 Tweenmax/lite 软件包似乎已成为行业标准。

您似乎遇到的问题是您多次启动补间。如果所有块都需要同时收缩,我可能会使用 for 循环并在每个块上运行补间。

但是,您必须确保的是,一旦单击它就可以删除单击事件处理程序,直到它完成,这样就不会再次单击它。

我还建议使用 TweenMax/Lite,因为它有一个叫做 TimelineMax/Lite 的东西,您可以在其中复合一堆补间,无论是同时还是交错,并在该 Timeline 对象上侦听一个 COMPLETE 事件。当该事件触发时,您可以重新激活点击或在动画完成后执行您需要执行的任何操作。

TimelineMax 具有一些不错的功能,例如 reverse 和 timeScale。

你能粘贴一些代码吗?这也将帮助我们帮助您。

于 2012-04-12T19:08:55.647 回答
0

您可以使用Tweener并使用

isTweening()autoOverwrite = false解决这个问题。

我已经有一段时间没有使用这些属性/函数了,但我确信 Tweener 中的某些东西可以轻松做到这一点。

于 2012-04-12T12:55:51.017 回答