0

ボールが円の 4 つのセクターの 1 つをランダムに移動するアニメーションを作成したいと考えています。これは 5 回発生します。そのため、while ループ (i<5) を作成し、ランダム関数を呼び出します。ループし、ランダムな fn 値に従っていくつかの x 値と y 値をアタッチする場合、while ループ内とキー フレーム値でタイムライン オブジェクトを作成します。これらの x 値と y 値を使用します。しかし、プログラムを実行するとどうなりますか。すべての値が作成されています (x と y の値は println で表示されます) が、最後の x と y の値 (i=5 の場合) のみが画面にレンダリングされます。前の値のアニメーション (1<=i< =4)レンダリングされていません。どこが間違っているのか教えてください。

public function run(args:String[]) {

変数 i=0; while(i<5) { var z=gety(); println(z); // var relativeTime:Duration=0s; if(z==1) {xbind=120; ybind=80; } そうでなければ (z==2) {xbind=120; ybind=120; } その他の場合 (z==3) { xbind=80; ybind=120; } その他の場合 (z==4) { xbind=80; ybind=80; }

var t:Timeline=タイムライン{

 //time: bind pos with inverse;
 repeatCount: Timeline.INDEFINITE
    autoReverse: true

   keyFrames:
       [


       KeyFrame{
   time: 0s values: [ x => 100.0,y => 100.0]},
   KeyFrame{time: 2s values:[x => xbind tween Interpolator.LINEAR,
   y =>  ybind tween Interpolator.LINEAR,]
 },
  ]


    }//end timeline

    i++;
    t.play();
Thread.sleep(2000);
 }//end while

}

4

1 に答える 1

0

ループ内のアニメーションのバインドされた値を更新することは、比較的一般的なアンチパターンのようです。タイムライン内でバインドされた値を更新することは、より良い解決策です。コードフラグメントについては、この投稿を調べてください。Stage を使用すると、 run() 関数にロジックを入れる必要がないことにも注意してください。

于 2010-04-06T22:11:48.080 に答える