首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

as3:类型转换、字面值、恒量、运算符、语句(for in和for each in)

2012-11-03 
as3:类型转换、字面值、常量、运算符、语句(for in和for each in)先说一下数据类型:基元数据类型包括 Boolean、

as3:类型转换、字面值、常量、运算符、语句(for in和for each in)

先说一下数据类型:基元数据类型包括 Boolean、int、Null、Number、String、uint 和 void。ActionScript核心类还定义下列复杂数据类型:Object、Array、Date、Error、Function、RegExp、XML 和 XMLList。 1、类型转换就是将一个对象的类型转换成另外的一种类型(它有资格转换,如果没有就会出错)。2、什么时候需要类型转换? 简单来说就是,当需要一个特定类型的值时,而给定的值确不是该类型,这时就需要转换,但不一定成功!大概有下面几种:    * 变量赋值,当无值和变量类型不匹配时,就会转换,如果不成功就会报类型不匹配的错误。    * 传参,当传的参数和参数类型不一致时。    * 返回值,当返回的值和声明的返回类型不一致时。    * 当进行加法运算时,可能存在需要转换的地方。    * 当你需要一个特定类型的对象时,可能去把一个对象转换成另外一种类型时。3、转换方式有隐式转换和显示转换 (很多语言里都有就不说了)。在严格模式下尽量使用显示转换。 4、可以将任何类型的对象转换成int,uint,Number,Boolean,String。 至于具体转换的规则可以查看其他资料。对于int,uint,Number来说,当发现不能转换数字时,int,uint就会把它转成0,而Number转换成NaN.5、字面值(摘书自《ActionScript3.0 编程》)“字面值”是直接出现在代码中的值。 下面的示例都是字面值:Java代码   1. 17     2. "hello"     3. -3     4. 9.4     5. null     6. undefined     7. true     8. false  17"hello"-39.4nullundefinedtruefalse 字面值还可以组合起来构成复合字面值。数组文本括在中括号字符 ([]) 中,各数组元素之间用逗号隔开。数组文本可用于初始化数组。下面的几个示例显示了两个使用数组文本初始化的数组。您可以使用 new 语句将复合字面值作为参数传递给 Array 类构造函数,但是,您还可以在实例化下面的 ActionScript 核心类的实例时直接赋予字面值:Object、Array、String、Number、int、uint、XML、XMLList 和 Boolean。Java代码   1. // 使用 new 语句。     2. var myStrings:Array = new Array(["alpha", "beta", "gamma"]);     3. var myNums:Array = new Array([1,2,3,5,8]);     4. // 直接赋予字面值。     5. var myStrings:Array = ["alpha", "beta", "gamma"];     6. var myNums:Array = [1,2,3,5,8];  // 使用 new 语句。var myStrings:Array = new Array(["alpha", "beta", "gamma"]);var myNums:Array = new Array([1,2,3,5,8]);// 直接赋予字面值。var myStrings:Array = ["alpha", "beta", "gamma"];var myNums:Array = [1,2,3,5,8]; 字面值还可用来初始化通用对象。通用对象是 Object 类的一个实例。 对象字面值括在大括号 ({}) 中,各对象属性之间用逗号隔开。每个属性都用冒号字符 (:) 进行声明,冒号用于分隔属性名和属性值。可以使用 new 语句创建一个通用对象并将该对象的字面值作为参数传递给 Object 类构造函数,也可以在声明实例时直接将对象字面值赋给实例。下面的示例创建一个新的通用对象,并使用三个值分别设置为 1、2 和 3 的属性(propA、propB 和 propC)初始化该对象:Java代码   1. // 使用 new 语句。     2. var myObject:Object = new Object({propA:1, propB:2, propC:3});     3. // 直接赋予字面值。     4. var myObject:Object = {propA:1, propB:2, propC:3};  // 使用 new 语句。var myObject:Object = new Object({propA:1, propB:2, propC:3});// 直接赋予字面值。var myObject:Object = {propA:1, propB:2, propC:3}; 6、常量。常量是指具有无法改变的固定值的属性。只能为常量赋值一次,而且必须在最接近常量声明的位置赋值。用const 代替var来创建。    * 将常量声明为类的成员,则只能在声明过程中或者在类构造函数中为常量赋值。      Java代码         1. class A           2. {           3.     public const MINIMUM:int = 0;           4.     public const MAXIMUM:int;           5.     public function A()           6.     {           7.         MAXIMUM = 10;           8.     }           9. }          10.           11. var a:A = new A();          12. trace(a.MINIMUM); // 0          13. trace(a.MAXIMUM); // 10        class A      {          public const MINIMUM:int = 0;          public const MAXIMUM:int;          public function A()          {              MAXIMUM = 10;          }      }      var a:A = new A();      trace(a.MINIMUM); // 0      trace(a.MAXIMUM); // 10       上面是合法的。    * 如果您尝试在类的外部设置 MAXIMUM 的初始值,将会出现运行时错误。      Java代码         1. class A           2. {           3.     public const MINIMUM:int = 0;           4.     public const MAXIMUM:int;           5. }           6. var a:A = new A();           7. a["MAXIMUM"] = 10; // 运行时错误        class A      {          public const MINIMUM:int = 0;          public const MAXIMUM:int;      }      var a:A = new A();      a["MAXIMUM"] = 10; // 运行时错误       7、运算符,记一下主要运算符 (其他运算符和java差不多)    * []                        初始化数组    * {x:y}                 初始化对象    * ()                      对表达式进行分组    * f(x)                    调用函数    * new                    调用构造函数    * x.y x[y]             访问属性    * <></>              初始化XMLList 对象(E4X)    * @                        访问属性(E4X)    * ::                        限定名称 (E4X)    * ..                        访问子级XML元素 (E4X)8、as3中的语句大多和java中的差不多,只是要注意一下循环语句for in和 for each in    * for..in 循环用于循环访问对象属性或数组元素      Java代码         1. var myObj:Object = {x:20, y:30};           2. for (var i:String in myObj)           3. {           4.      trace(i + ": " + myObj[i]);           5. }           6. // 输出:           7. // x: 20           8. // y: 30        var myObj:Object = {x:20, y:30};      for (var i:String in myObj)      {           trace(i + ": " + myObj[i]);      }      // 输出:      // x: 20      // y: 30       可以使用 for..in 循环来循环访问通用对象 的属性 (不按任何特定的顺序来保存对象的属性,因此属性可能以看似随机的顺序出现)      Java代码         1. var myArray:Array = ["one", "two", "three"];           2. for (var i:String in myArray)           3. {           4.      trace(myArray[i]);           5. }           6. // 输出:           7. // one           8. // two           9. // three        var myArray:Array = ["one", "two", "three"];      for (var i:String in myArray)      {           trace(myArray[i]);      }      // 输出:      // one      // two      // three       还可以循环访问数组中的元素 .      注意,循环的是属性名称,通过此名称去取属性值,和javascipt类似。      如果对象是自定义类的一个实例,则除非该类是动态类 ,否则将无法循环访问该对象的属性 。即便对于动态类的实例 ,也只能循环访问动态添加的属性 。    * for each..in 循环用于循环访问集合中的项目, 它可以是 XML 或 XMLList 对象中的标签、对象属性保存的值或数组元素。      访问通用对象的属性。      Java代码         1. var myObj:Object = {x:20, y:30};           2. for each (var num in myObj)           3. {           4.     trace(num);           5. }           6. // 输出:           7. // 20           8. // 30        var myObj:Object = {x:20, y:30};      for each (var num in myObj)      {          trace(num);      }      // 输出:      // 20      // 30       循环访问 XML 或 XMLList 对象      Java代码         1. var myXML:XML = <users>           2.                                  <fname>Jane</fname>           3.                                  <fname>Susan</fname>           4.                                  <fname>John</fname>           5.                             </users>;           6. for each (var item in myXML.fname)           7. {           8.      trace(item);           9. }          10. /* 输出         11. Jane         12. Susan         13. John         14. */        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      */       循环访问数组中的元素      Java代码         1. var myArray:Array = ["one", "two", "three"];           2. for each (var item in myArray)           3. {           4.     trace(item);           5. }           6. // 输出:           7. // one           8. // two           9. // three        var myArray:Array = ["one", "two", "three"];      for each (var item in myArray)      {          trace(item);      }      // 输出:      // one      // two      // three       注意 观察:,for each..in循环中的迭代变量包含属性所保存的值 ,而不包含属性的名称。      如果对象是密封类的实例,则您将无法循环访问该对象的属性。即使对于动态类的实例,也无法循环访问任何固定属性 (即,作为类定义的一部分定义的属性)。

本文地址:http://kino.iteye.com/blog/237240

热点排行