Adobe flash (AS2):如何制作一个永远重复的循环,并且每 5 秒复制一个影片剪辑?

Posted

技术标签:

【中文标题】Adobe flash (AS2):如何制作一个永远重复的循环,并且每 5 秒复制一个影片剪辑?【英文标题】:Adobe flash (AS2): How to make a loop that repeats forever, and that duplicates a movieclip every 5 seconds? 【发布时间】: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,但也许有人可以帮助你。 【参考方案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);

【讨论】:

以上是关于Adobe flash (AS2):如何制作一个永远重复的循环,并且每 5 秒复制一个影片剪辑?的主要内容,如果未能解决你的问题,请参考以下文章

Adobe flash AS 2.0 真假

如何制作具有透明背景的 Flash 电影

如何在运行某些代码之前等待 flash (as2) 加载子元素?

Adobe Flash/动画静音特定音频

html5/css/js 制作复杂的基于模块的软件平台(脱离Adobe Flash)

使用 AS2 在 flash 上引入 php 变量的简单方法