0

最初的目标是在 event1 上反向播放动画,通常在 event2 上。所以我使用了这段代码:

/* some imports */
public class Element extends MovieClip {
        private var tween:Tween;

        public function Element() {
            tween = new Tween(this, "y", Regular.easeInOut, -this.height, 0, 0.7, true);
            tween.stop();

            this.addEventListener(event1, reverse);
            this.addEventListener(event2, normal);
        }

        private function reverse(e:Event1) {
            tween.yoyo();
        }

        public function normal(e:Event2) {
            tween.stop();
            tween.rewind();
            tween.start(); 
        }
}

现在我测试了一下: 1.Event1发生,动画正常播放 2.Event2发生,动画倒转 3.Event1 1发生,动画倒转

出于某种奇怪的原因,悠悠球在某种程度上是永久性的。我知道一些解决方法,比如为每个动画创建新的 Tween,检查是否已经使用了 yoyo,等等。

这是预期的行为吗?在 adobe API 中,我读到了 begin 和 finish 道具,它们都有“在创建新的 Tween 实例或调用 Tween.yoyo() 方法时将此属性设置为参数。”。我是否已手动重置它们?

不想使用 Tweenmax、tweenlite 或任何外部库。

4

1 回答 1

1

手册说要让补间再次正常运行,请调用另一个 yoyo()。不幸的是,补间本身并没有提供任何关于它现在是否是 yoyo'd 的提示,所以你需要跟踪它。

    private var tween:Tween;
    private var tween_yoyo:Boolean;
    private function reverse(e:Event1) {
        if (!tween_yoyo) tween.yoyo();
        else {
            tween.stop();
            tween.rewind();
            tween.start(); 
        }
        tween_yoyo=true;
    }

    public function normal(e:Event2) {
        if (tween_yoyo) tween.yoyo();
        else {
            tween.stop();
            tween.rewind();
            tween.start(); 
        }
        tween_yoyo=false;
    }    
于 2013-01-17T12:49:43.890 回答