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 秒复制一个影片剪辑?的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行某些代码之前等待 flash (as2) 加载子元素?