我正试图复制“墨西哥波浪”的动作。我正在使用Flash CS5,并使用AS2。
我创建了一个“跳线”图形,并在一个剪辑中对其进行动画处理,使其一次跳起 - 然后再回到地面。我已将剪辑拉到主时间轴并复制了很多次,所以我有一排'跳线'。我给每个实例一个唯一的ID。然后我告诉每个剪辑实例按顺序开始播放,使用以下代码:
var total_jumpers = 36;
var i = 0;
var jumpLag = 1000;
function do_jump(bottle) {
jumper.play();
}
for( i=1; i<=total_jumpers; i++)
{
var mcName:String = "b" + i;
jump = setInterval(do_jump,jumpLag,this[mcName]);
trace("Jumper " + mcName + ". Lag: " + jumpLag);
jumpLag += 100;
}
clearInterval(jump);
stop();
在剪辑中,我将stop()放在最后一帧中以尝试阻止它循环。
所以这个工作正常,但剪辑似乎循环 - 我无法让它们停止。
如果有任何见解/帮助,我将不胜感激。
答案 0 :(得分:1)
setInterval
可能不是最好的方法,因为它会一直重复,直到调用clearinterval
为止。setInterval
为每次调用返回一个不同的ID - 将其视为唯一每个计时器的ID。
调用clearInterval
的代码实际上只清除最后一个间隔。需要为clearInterval
返回的每个ID调用setInterval
。这需要将ID存储在数组中,然后在动画开始后调用clearInterval
以获取特定ID。
更好的方法是使用setTimeout
(请参阅flash.utils.setTimeout),因为它只运行一次然后死掉,这意味着您不需要额外的逻辑来停止计时器。