8.5.11 行程

来源:互联网 发布:申威处理器 知乎 编辑:程序博客网 时间:2024/04/29 09:03

    当以时长为出发点考察时,确定各运动阶段比较容易,只要比较当前计时器次数和个阶段分配时长的关系即可。而围绕速度考虑这个问题时,就必须引入一个新的变量:已过行程(past)。已过行程(past)描述的是对象已经走过路程的总和。通过比较已过行程和各个阶段的路程距离,就能区分甄别不同的运动阶段了。

         //ary_dist数组各项依次表示:三点距离总长,AB距离,BC距离,CA距离

if(past<=ary_dist[1]){

                   //处理运动第一阶段:A点到B

         }

         else if(past>ary_dist[1] && past<= (ary_dist[2]+ary_dist[1]))

{

                   //处理运动第一阶段:B点到C

         }

         else if(past> (ary_dist[2]+ary_dist[1]) && past<=ary_dist[0])

{

                   //处理运动第一阶段:C点到A

         }

注意:围绕时长编程时,当前计数器在重设定时器时被自动清零了。所以当定时器重启后,动画能正常重新开始。而在围绕速度编程的时候,判断的依据是已过行程(past)。必须在定时器重启时手工清零已过行程(past),保证动画可以重复运行。具体做法就是在计时器timerComplete事件的响应函数里,增加一行修正语句:

function animComplete(event:TimerEvent):void {

         event.target.reset();

         past=0;//手工清零

         event.target.start();

}

这样,当运动对象走完全部路程后,又能回到起始点,并继续新的动画。

原创粉丝点击