2

オブジェクトがあり、2 つのモーション トゥイーンを適用したいと考えています。それらをタイムラインに追加しようとしましたが、いくつかの問題が発生しました。テストすると、ほとんどの場合、結果を得るために何度もクリックする必要があります。 2番目のトゥイーンの経過時間を1秒以上(実際には0.5以上)に設定すると、奇妙なことが起こります。フラッシュcs4で作業し、クラスがオブジェクトにリンクされています。

package {

import com.greensock.*;
import com.greensock.easing.*;
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Border extends MovieClip
{
     private var myTimeline : TimelineMax = new TimelineMax( );

    public function Border( ) {             
    }   

    public function doAnimate ( ev : MouseEvent )
    {
        myTimeline.append(TweenMax.to(this, 0.5, { width : 400 } ) );
        myTimeline.append(TweenMax.to(this, 0.5 , { height : 400 } ) ); // <--
    }
    public function deAnimate ( ev : MouseEvent )   
    {       
        myTimeline.reverse( );
    }
  }
}

メインクラス

package {

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

public class Document extends MovieClip {

    public function Document( )     {
        right.addEventListener( MouseEvent.CLICK , border.doAnimate );
        left.addEventListener( MouseEvent.CLICK , border.deAnimate );
    }
  }
}
4

1 に答える 1

2

TimelineMax インスタンスをすぐに (コンストラクターの上で) 作成し、すぐに再生を開始しますが、後ほど (明らかに MouseEvent.CLICK で) データを入力しません。したがって、仮想再生ヘッドののタイムラインにトゥイーンを配置しています。たとえば、トゥイーンをタイムラインの 0 秒の位置に挿入すると、タイムラインの再生ヘッドが 5 秒になるとします。http://forums.greensock.com/viewtopic.php?f=1&t=3842&p=15044#p15044で詳しく説明されています. 解決策は非常に簡単です。 doAnimate() メソッドで TimelineMax を restart() するだけです。これにより、明らかに仮想再生ヘッドが先頭に移動します。これを処理する方法は他にもいくつかありますが、あなたの状況で最も簡単なのは、タイムラインを restart() することだと思います。http://forums.greensock.comの専用フォーラムで気軽に質問してください(そこで迅速に回答を得られるように努力しています)。

于 2011-10-18T20:19:15.620 に答える