重复动作

动作脚本可以将一个动作重复指定的次数,或是在特定的条件成立时重复动作。使用 whiledo..whileforfor..in 动作可以创建循环。

在条件成立时重复动作:

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 动作中,计数器和递增计数器的语句都是该动作的一部分。在下面的示例中,第一个表达式 (var i = 4) 是在第一次迭代之前计算的初始表达式。第二个表达式 (i > 0) 是每次运行循环之前检查的条件。第三个表达式 (i--) 称为后表达式,每次运行循环之后会计算该表达式。

for (var i = 4; i > 0; i--){
  myMC.duplicateMovieClip("newMC" + i, i + 10);
}

遍历影片剪辑或对象的子级:

子级包括其它影片剪辑、函数、对象和变量。下面的示例使用 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..intypeof 运算符配合使用即可实现此目的。

for (name in myMovieClip) {
  if (typeof (myMovieClip[name]) == "movieclip") {
    trace("I have a movie clip child named " + name);
  }
}

有关各个动作的更多信息,请参见动作脚本字典概述中相应的各个条目。