0

我已经尝试学习 actionscript 3 一段时间了,有些东西让我很受用。比如我什么时候应该使用循环(for、while 等)?我观看视频并阅读有关该主题的文章,我总是遇到这个例子,女巫真的对我没有太大帮助:

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

如果有人可以在这个问题上帮助我,也许让我稍微挑选一下大脑,我将非常感激。

谢谢你。

4

3 回答 3

3

每当您需要执行重复性任务时,您都可以使用循环。

因此,如果您需要对 1000 个对象执行相同的操作,那么使用循环而不是编写相同代码的 1000 次变体会更实用。

一个 Flash 示例:假设您有 10 个电影剪辑,您希望在给定动作上全部播放。

你可以这样做:

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)?那么你只需要更新一行。

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

于 2012-12-07T01:13:22.267 回答
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 循环更简单。

于 2012-12-07T02:16:24.910 回答
0

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

“当你知道你想要/需要做多少次迭代时使用 for 循环”

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

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

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

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

就像原型所说的那样,当删除容器的所有子级时,while 循环很棒,但这也可以使用 for 循环来实现,例如:

for(var i:int = 0; i < numChildren; i++)
{
     removeChildAt(i); i--;
}
于 2012-12-07T14:04:49.370 回答