我已经尝试学习 actionscript 3 一段时间了,有些东西让我很受用。比如我什么时候应该使用循环(for、while 等)?我观看视频并阅读有关该主题的文章,我总是遇到这个例子,女巫真的对我没有太大帮助:
for(var i:Number = 0; i < 10; i++)
{
trace(i);
}
如果有人可以在这个问题上帮助我,也许让我稍微挑选一下大脑,我将非常感激。
谢谢你。
我已经尝试学习 actionscript 3 一段时间了,有些东西让我很受用。比如我什么时候应该使用循环(for、while 等)?我观看视频并阅读有关该主题的文章,我总是遇到这个例子,女巫真的对我没有太大帮助:
for(var i:Number = 0; i < 10; i++)
{
trace(i);
}
如果有人可以在这个问题上帮助我,也许让我稍微挑选一下大脑,我将非常感激。
谢谢你。
每当您需要执行重复性任务时,您都可以使用循环。
因此,如果您需要对 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)?那么你只需要更新一行。
这是一个非常简单的示例(并且只是您使用循环的众多原因之一),当您开始处理更复杂的数据和对象时,您可能会猜到循环如何帮助您编写重复性任务。
通常,当我需要索引时,我会使用 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 循环更简单。
正如我的老编程老师所说:
“当你知道你想要/需要做多少次迭代时使用 for 循环”
即循环遍历列表、数组、向量等。
“当你不确定时使用 while 循环。”
即遍历整个文件(用于读取二进制数据)或执行在特定条件下停止的连续事件。
话虽如此,在大多数情况下,您可能可以同时应用 for 和 while 循环。我个人主要使用 for 循环。
就像原型所说的那样,当删除容器的所有子级时,while 循环很棒,但这也可以使用 for 循环来实现,例如:
for(var i:int = 0; i < numChildren; i++)
{
removeChildAt(i); i--;
}