您的位置:首页 > 其它

8.5.8 调整运动阶段

2008-04-24 10:05 134 查看

接下来要做的就是分别计算出A、B、C三点之间的距离,并确定物体经过每一段所需要的时间。对本例中的A点到B点的所需时长,可用以下代码求得:
var total_distance:Number;
total_distance =dist(stoppoint[0],stoppoint[1])+dist(stoppoint[1],stoppoint[2])+dist(stoppoint[2],stoppoint[0]);

var sect_A2B;
sect_A2B =Math.round( dist(stoppoint[0],stoppoint[1]) / total_distance * linetimer.repeatCount );
这段代码中,先求出A、B、C三点距离的总和total_distance,然后得出A、B之间距离占总长total_distance的比例。这个比例应该同AB点分配时长与总动画时长之间的比例相同。所以很容易得出动画对象经过AB点距离所需分配的时长sect_A2B。按照这种方法,依次求出其他阶段的所需时长也并不困难。这样,程序就获得了一组重要的数据,作为动态调整运动阶段的依据。
修改时段控制语句if…else if…,并修改控制显示对象运动的代码部分,达到动态调整运动阶段的目的。在例8-5中,使用的代码是:
if(i<=50)
{
LineRunner.x+=((stoppoint[1].x-stoppoint[0].x)/50);
LineRunner.y+=((stoppoint[1].y-stoppoint[0].y)/50);
}
在本例中,需要将固定时长50替换为这一运动阶段对应的所需时长:
if(i<= sect_A2B)
{
LineRunner.x+=((stoppoint[1].x-stoppoint[0].x)/ sect_A2B);
LineRunner.y+=((stoppoint[1].y-stoppoint[0].y)/ sect_A2B);
}
这样,动画对象在AB两点之间的运动速度就被控制在平均水准了。
对于点B到点C,以及点C到点A的处理依此类推,无需赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: