动作脚本可以将一个动作重复指定的次数,或是在特定的条件成立时重复动作。使用 while
、do..while
、for
和 for..in
动作可以创建循环。
while
语句。 While
循环计算一个表达式的值,如果表达式为 true
,则会执行循环体中的代码。当循环体中的每个语句都执行完毕后,会再次评估该表达式。在下面的示例中,循环将执行四次:
i = 4; while (var i > 0) { my_mc.duplicateMovieClip("newMC" +i, i ); i--; }
可以使用 do..while
语句创建与 while
循环同类的循环。Do..while
循环中是在代码块结束时计算表达式的值,因此该循环总是至少执行一次,如下例所示:
i = 4; do { my_mc.duplicateMovieClip("newMC" +i, i ); i--; } while (var i > 0);
for
语句。多数循环都会使用某种计数器,以控制循环执行的次数。每执行一次循环就称为一次迭代。可以声明一个变量并编写一条语句,每执行一次循环,该语句都会增加或减小该变量。在 for
动作中,计数器和递增计数器的语句都是该动作的一部分。在下面的示例中,第一个表达式 (var i = 4
) 是在第一次迭代之前计算的初始表达式。第二个表达式 (i > 0
) 是每次运行循环之前检查的条件。第三个表达式 (i--
) 称为后表达式,每次运行循环之后会计算该表达式。
for (var i = 4; i > 0; i--){ myMC.duplicateMovieClip("newMC" + i, i + 10); }
for..in
语句。 子级包括其它影片剪辑、函数、对象和变量。下面的示例使用 trace
语句在“输出”面板中显示其结果:
myObject = { name:'Joe', age:25, city:'San Francisco' }; for (propertyName in myObject) { trace("myObject has the property:" + propertyName + ", with the value:" + myObject[propertyName]); }
本示例将在“输出”面板中生成如下结果:
myObject has the property:name, with the value:Joe myObject has the property:age, with the value: 25 myObject has the property:city, with the value:San Francisco
您可能想让脚本重复特定的子级类型,例如只重复影片剪辑子级。将 for..in
与 typeof
运算符配合使用即可实现此目的。
for (name in myMovieClip) { if (typeof (myMovieClip[name]) == "movieclip") { trace("I have a movie clip child named " + name); } }
有关各个动作的更多信息,请参见动作脚本字典概述中相应的各个条目。