Flex中2个补间动画之间的无限循环

时间:2011-05-27 17:16:15

标签: flex actionscript adobe

我正在尝试在Flex中的两个不同的补间动作之间循环。这是我到目前为止所做的:

在声明中:

<fx:Declarations>
    <s:Animate id="goRight"
        duration="3000" target="{nShape}" >
        <s:SimpleMotionPath property="x" valueFrom="0" valueTo="400" />
    </s:Animate>
</fx:Declarations>

运行动画:

var animate:Boolean = true;
var isLeft:Boolean = true;

while (animate)
{
    if (isLeft) 
    {
        goRight.play(null);
        while (goRight.isPlaying){};
    }
    else {
        goRight.play(null, true); // play it backwards
        while (goRight.isPlaying){};
    }

    isLeft = !isLeft;
}

问题是,一旦我启动动画(通过单击按钮),我会收到超时错误,说脚本已经运行超过15秒,没有发生任何补间。如果我只是简单地动画一次动画就可以了。有谁知道如何让这种永久性的补间工作?

2 个答案:

答案 0 :(得分:3)

...你有3个while循环,永不破坏......

Flash没有线程(还),它是基于事件的语言。如何使用事件来检查动画完成时的进度或数字(应该发送一个完整的事件)。

这不是Java。这是一种基于视觉,无线程,异步,基于框架的语言。

答案 1 :(得分:2)

问题在于:

while (goRight.isPlaying){};

致电goRight.play(null);后,上述while语句将无限期循环,因为goRight.isPlaying为真。

如果您需要此证明,请将以下内容添加到while循环中:

trace("I'm playing");

你需要摆脱while循环并使用其他一些构造;也许事件处理程序?我不确定现在最好的做法是什么...自从我使用补间动画以来已经有一段时间了,但我知道在那天曾经有一些事件可以在补间动画结束时挂钩。