什么时候是使用循环的好时机?

时间:2012-12-07 01:10:10

标签: actionscript-3 loops

我一直在努力学习动作3,现在有些事情让我感到兴奋。喜欢 什么时候我应该使用循环(for,while等)? 我观看视频和阅读有关该主题的文章我总是遇到这个例子女巫真的没有帮帮我那么多:

for(var i:Number = 0; i < 10; i++)
{
 trace(i);
}

如果有人可以帮我解决这个问题,也许让我选择一点脑子,我会非常感激。

谢谢。

3 个答案:

答案 0 :(得分:3)

您可以在需要执行重复性任务时随时使用循环。

因此,如果您需要执行相同操作的1000个对象,则使用循环而不是将相同代码的变体写入1000次更为实际。

一个flash示例:假设您有10个想要在给定操作中播放的movieClip。

你可以这样做:

mc1.play();
mc2.play();
mc3.play();
mc4.play();
mc5.play();
mc6.play();
mc7.play();
mc8.play();
mc9.play();
mc10.play();

对于10来说,它只是令人烦恼但并不是一件大事。如果你有100,或1000或10000,那就太疯狂了。再加上如果您以后需要更改代码怎么办?

更好的方法是使用循环。假设这10个剪辑(或任意数量的剪辑)都是名为clips的父对象的子节点。

for(var i:int=0; i<clips.numChildren;i++){
    var mc:MovieClip = clips.getChildAt(i);
    mc.play();
}

该代码将执行完全相同的操作。你正在循环播放剪辑父母的所有孩子,并告诉大家玩。需要将其更改为gotoAndPlay(3)?然后你只需要更新一行。

这是一个非常简单的示例(只是您使用循环的众多原因之一),当您开始处理更复杂的数据和对象时,您可能会猜测循环如何帮助您编写重复性任务。

答案 1 :(得分:0)

通常,当我需要索引时,我会使用for循环。

例如,我可能需要一个索引数组来表示给定数组中的哪些MovieClip可见:

var visibleClips:Array = new Array;
for (var index:int = 0;index < arrayOfClips.length;index++)
{
    var clip:MovieClip = arrayOfClips[index];
    if (clip.visible)
    {
        visibleClips.push(index);
    }
}

我通常使用while循环来删除DisplayObject中的所有子节点,如下所示:

while (container.numChildren > 0)
{
    container.removeChildAt(0);
}

正如您所看到的,在这种情况下我真的不需要索引,因此使用while循环更简单。

答案 2 :(得分:0)

正如我的老编程老师所说:

“当您知道需要/需要执行多少次迭代时,使用for循环”

循环遍历列表,数组,向量等。

“当你不确定的时候使用while循环。”

循环遍历整个文件(用于读取二进制数据)或执行在特定条件下停止的连续事件。

话虽如此,大多数情况下你可能同时应用for和while循环。我个人主要使用for循环。

就像原型一样,当移除容器的所有子容器时,while循环很棒但是这也可以使用for循环来实现:

for(var i:int = 0; i < numChildren; i++)
{
     removeChildAt(i); i--;
}