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で、開始と終了の小道具について読みました。どちらも「このプロパティは、新しいTweenインスタンスを作成するとき、またはTween.yoyo()メソッドを呼び出すときにパラメーターとして設定されます」。手動でリセットしましたか?

Tweenmax、tweenlite、または外部ライブラリを使用したくありません。

4

1 に答える 1

1

マニュアルによると、トゥイーンを再び正常に実行するには、別の yoyo() を呼び出す必要があります。残念ながら、トゥイーン自体は現在ヨーヨーされているかどうかについてのヒントを提供していないため、これを追跡する必要があります.

    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 に答える