【第三章】《Flash Actionscript3 殿堂之路》读书笔记

       这章的标题是:“ActionScript3流程控制”。对于流程控制,很多编程语言都是大同小异的,本章就说到这个了。花在这章的时间不多,在看的时候我打开flash里的官方中文帮助教程,相互补充了一下。对于流程控制的语句,主要有以下这几种:
条件语句:if…elseif…else ifswitch
循环:forfor…infor each…inwhiledo…while
 
其中for…infor each…in就比较有意思,重点记了一下。
for...in
for...in 循环用于循环访问对象属性或数组元素。例如,可以使用 for..in 循环来循环访问通用对象的属性(不按任何特定的顺序来保存对象的属性,因此属性可能以看似随机的顺序出现):
var myObj:Object = {x:20, y:30};
for (var i:String in myObj){
    trace(i + ": " + myObj[i]);
}
// 输出:
// x: 20
// y: 30
 
还可以循环访问数组中的元素:
var myArray:Array = ["one", "two", "three"];
for (var i:String in myArray){
    trace(myArray[i]);
}
// 输出:
// one
// two
// three
 
如果对象是自定义类的一个实例,则除非该类是动态类,否则将无法循环访问该对象的属性。即便对于动态类的实例,也只能循环访问动态添加的属性。
 
 
for each..in
for each..in 循环用于循环访问集合中的项目,它可以是 XML XMLList 对象中的标签、对象属性保存的值或数组元素。例如,如下面所摘录的代码所示,您可以使用 for each..in 循环来循环访问通用对象的属性,但是与 for..in 循环不同的是,for each..in 循环中的迭代变量包含属性所保存的值,而不包含属性的名称:
var myObj:Object = {x:20, y:30};
for each (var num in myObj){
    trace(num);
}
// 输出:
// 20
// 30
 
您可以循环访问 XML XMLList 对象,如下面的示例所示:
var myXML:XML = <users>
                   <fname>Jane</fname>
                   <fname>Susan</fname>
                   <fname>John</fname>
                </users>;
 
for each (var item in myXML.fname){
    trace(item);
}
/* 输出
Jane
Susan
John
*/
 
还可以循环访问数组中的元素,如下面的示例所示:
var myArray:Array = ["one", "two", "three"];
for each (var item in myArray){
    trace(item);
}
// 输出:
// one
// two
// three
 
如果对象是密封类的实例,则您将无法循环访问该对象的属性。即使对于动态类的实例,也无法循环访问任何固定属性(即,作为类定义的一部分定义的属性)。
 
 
Flash Actionscript3 殿堂之路》里也着重说了breakcontinue的用法,书中举了个例子,把两者用在一起,很具体地表现了它们俩的用法了。在这里就分别简单地举例子记录一下它们俩的用法:
 
下例使用 break 以退出一个循环(如果没有该语句,该循环为无限循环):
var i:int = 0;
while (true) {
    trace(i);
    if (i >= 10) {
        break; // i的值为10时退出这个while循环
    }
    i++;
}
/* output:
0
1
2
3
4
5
6
7
8
9
10*/
 
在下面的 while 循环中,continue 语句用于遇到 3 的整数倍时跳过循环体的其余部分,并跳转到循环的顶端(在该处进行条件测试):
var i:int = 0;
while (i < 10) {
    if (i % 3 == 0) {
        i++;
        continue;
    }
    trace(i);
    i++;
}
for 循环中,还可以使用 continue 语句以跳过循环体的其余部分。在下例中,如果 i % 3 等于 0,则跳过 trace(i) 语句:
 
for (var i:int = 0; i < 10; i++) {
    if (i % 3 == 0) {
        continue;
}
 
       总的来说,break是退出整个循环的,而continue是退出当前循环的,运行以上代码就一目了然了。

标签集:TAGS:AS3 Flash
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}