【问题标题】:Adobe flash (AS2): How to make a loop that repeats forever, and that duplicates a movieclip every 5 seconds?Adobe flash (AS2):如何制作一个永远重复的循环,并且每 5 秒复制一个影片剪辑?
【发布时间】:2017-08-12 04:11:39
【问题描述】:

我想制作一个永远重复的循环,并且每 5 秒复制一个影片剪辑。这段代码

 var timer = 0;
countup = function(){
timer++;
if (timer >= 5){
    mc.duplicateMovieClip("mc2"+u, u, {_x:50});
    clearInterval(countupInterval);
}
}
var countupInterval = setInterval(countup,1000);

复制一次影片剪辑,但之后间隔停止(因为 clearInterval)并且不再发生复制。如果我删除 clearInterval 部分,movieclip 被复制一次,相同的movieclip 在 5 秒后重复(因为 setInterval 部分)。如果有人有类似问题的链接或问题的答案,我将非常感激!

【问题讨论】:

  • "forever" 是个坏主意。它会崩溃或冻结计算机。 Flash Player 每次运行时只会获得操作系统分配给它的 x-amount 设备 RAM,因此设备 RAM 很快就会充满保存这些重复的 MC。决定你想要达到的目标并将其设置为限制(ie: 100 份等)... PS:为什么不像自 2008 年以来全世界那样直接转向 AS3?它有一个timer 类。我已经忘记了 AS2,但也许有人可以帮助你。

标签: flash actionscript actionscript-2


【解决方案1】:

不要使用间隔,调用延迟是不准确的。使用计时器并自行计算时间:

var timerMC:MovieClip = _root.createEmptyMovieClip("timerMC", _root.getNextHighestDepth());
timerMC.lastTime = getTimer();
timerMC.onEnterFrame = function() {
    var currentTime:Number = getTimer();
    if (currentTime - this.lastTime >= 5000) {
        mc.duplicateMovieClip("mc2"+u, u, {_x:50});
        u++;
        this.lastTime = currentTime;
    }
};

【讨论】:

    【解决方案2】:

    您应该在代码中设置并不断更改该 u 变量 并省略 clearInterval 函数。然后,如果 timer 值大于 4,则再次将其设置为 0。 例如:

    var timer = 0;
    var u = 0;
    var x = 50;
    countup = function(){
        timer++;    
        if (timer > 4){
            timer = 0;
            u++;
            mc.duplicateMovieClip("mc2"+u, u, {_x:x});
            // clearInterval(countupInterval);
            x += 50;
        }
    }
    var countupInterval = setInterval(countup, 1000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2019-12-07
      • 1970-01-01
      • 2010-09-11
      • 2016-04-06
      相关资源
      最近更新 更多