【问题标题】:Mexican Wave Effect in FlashFlash 中的墨西哥波浪效果
【发布时间】:2011-08-26 04:24:49
【问题描述】:

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

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

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

【问题讨论】:

    标签: flash actionscript actionscript-2


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多