Flash中的墨西哥波浪效应

时间:2011-08-26 04:24:49

标签: flash actionscript actionscript-2

我正试图复制“墨西哥波浪”的动作。我正在使用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()放在最后一帧中以尝试阻止它循环。

所以这个工作正常,但剪辑似乎循环 - 我无法让它们停止。

如果有任何见解/帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

setInterval可能不是最好的方法,因为它会一直重复,直到调用clearinterval为止。setInterval为每次调用返回一个不同的ID - 将其视为唯一每个计时器的ID。

调用clearInterval的代码实际上只清除最后一个间隔。需要为clearInterval返回的每个ID调用setInterval。这需要将ID存储在数组中,然后在动画开始后调用clearInterval以获取特定ID。

更好的方法是使用setTimeout(请参阅flash.utils.setTimeout),因为它只运行一次然后死掉,这意味着您不需要额外的逻辑来停止计时器。