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



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

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

如果有人能在这个问题上帮助我,也许让我在大脑中挑一点,我会非常感激

谢谢。

您可以在需要执行重复任务的任何时候使用循环。

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

举个简单的例子:假设你有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循环更简单。

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

"当你知道你想要/需要进行多少次迭代时,用于循环">

I.e循环通过列表、数组、向量等

"当你不确定时,使用while循环。">

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

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

就像prototype所说的while循环在移除容器的所有子级时很好,但这也可以使用for循环来实现:

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

最新更新