1

私はしばらくこれに取り組んできました。この場合、「mcBall」というmovieClipというオブジェクトがあります。mcBall が 2 点間をスムーズに移動できるように、トゥイーンで 2 つのボタン "btnLeft" と "btnRight" を設定しました。正常に動作しますが、グリッチが発生するのは、2 つのボタンがまだアクティブであり、ユーザーがいずれかのボタンをクリックすると、当然のことながらボールが開始点に戻ることです。私の質問はこれです...「mcBall」オブジェクトの移動中にボタンを非アクティブにする最良の方法は何ですか。ボタンにremoveEventListenerを使用してから、再度追加するのが最善でしょうか。「If (mcBall.x = >=81 || <=469) removeEventListener」のような if 文を使用した方がよいでしょうか? 多分tweenEventを使用してください。

どんな助けでも大歓迎です。ありがとう

Flash cs3 の使用

このコードでは、ボールが動いている間は非アクティブのままで、もう一方のボタンはアクティブなままになるように、1 つのボタンをオフにすることができました。removeEventListener の配置がわかりません。

import fl.transitions.Tween;
import fl.transitions.easing.*;

function moveBallRight(evt:MouseEvent):void {
    var moveBall:Tween=new Tween(mcBall,"x",Regular.easeOut,80,470,4,true);
    btnRight.removeEventListener(MouseEvent.CLICK,moveBallRight);
    btnLeft.addEventListener(MouseEvent.CLICK,moveBallLeft);

}
btnRight.addEventListener(MouseEvent.CLICK,moveBallRight);


function moveBallLeft(evt:MouseEvent) {
    var moveBall:Tween=new Tween(mcBall,"x",Regular.easeOut,470,80,4,true);
    btnRight.addEventListener(MouseEvent.CLICK,moveBallRight);
    btnLeft.removeEventListener(MouseEvent.CLICK,moveBallLeft);


}

btnLeft.addEventListener(MouseEvent.CLICK,moveBallLeft);
4

3 に答える 3

4

個人的には、Actuateトゥイーン ライブラリの使用をお勧めします。TweenLite/Max とは異なり、完全にオープンソースであり、ほとんどの機能を備えており、高速で、プロ/有料バージョンはありません。

また、TweenLite よりも Actuate のインターフェースの方がはるかに優れています。非常によく似ているので、簡単に使い始めることができますが、トゥイーン修飾子がより明確な方法で追加される方法が気に入っています。

簡単な例:

Actuate.tween(mySprite, 1, { alpha:1 });

次に、イージング方程式を指定する必要があります。最後にチェーンするだけです。

Actuate.tween(mySprite, 1, { alpha:1 }).ease(Quad.easeOut);

遅刻もしたいですか?それをチェーンに追加します:

Actuate.tween(mySprite, 1, { alpha:1 }).delay(1).ease(Quad.easeOut);

もちろん、パラメータを使用して onComplete 関数を呼び出すこともできます。

Actuate.tween(mySprite, 1, { alpha:1 }).onComplete(trace, 'Tween finished');

メソッドの完全なリストと例については、上記のリンク先の Actuate Google Code ページをご覧ください。

于 2013-04-11T00:31:25.257 に答える
3

fl.transitions.Tween のネイティブ Tween クラスを使用しないことをお勧めします。あまり良くありません。業界標準はgreensock の TweenMaxです。

TweenMax を使用すると、トゥイーン終了イベントに応答するのは非常に簡単です。onComplete:myhandlerfunctionをトゥイーンに追加するだけです。上記のコードの例は次のようになります。

 var moveBall:Tween=new Tween(mcBall,"x",Regular.easeOut,80,470,4,true);

次のようになります。

TweenMax.to(mcBall, 4, {x:470, ease:Expo.easeOut, onComplete:onBallMovedLeftComplete};

それが役立つことを願っています。そして、これらのネイティブ トゥイーン クラスを二度と使用する必要がなくなることを願っています。それらはピットです。

于 2013-04-10T16:37:43.293 に答える