0

我想创建一个动画,其中球将在圆的 4 个扇区之一中随机移动。这将发生 5 次。所以,我创建一个 while 循环(i<5)并调用随机函数。然后创建一个如果循环并根据随机 fn 值附加一些 x 和 y 值。然后在 while 循环和关键帧值中创建一个时间线对象,我使用这些 x 和 y 值。但是当我运行程序时,会发生什么是正在创建所有值(通过 println 看到的 x 和 y 值),但只有最后一个 x 和 y 值(对于 i=5)在屏幕上呈现。先前值的动画(1<=i< =4)没有被渲染。请告知我哪里出错了?

公共功能运行(参数:字符串[]){

变量 i=0; while(i<5) { var z=gety(); 打印(z);// var relativeTime:Duration=0s; 如果(z==1){xbind=120; ybind=80;} 否则 if(z==2) {xbind=120; ybind=120;} 否则 if(z==3) { xbind=80; ybind=120;} 否则 if(z==4) { xbind=80; ybind=80;}

var t:时间线=时间线{

 //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 回答