package {
import flash.display.MovieClip;
public class HelloWorld extends MovieClip {
public function HelloWorld() {
// constructor code
trace("Hello World ActionScript3.0 Language!");
AS3VarType();
}
// AS3 一切类型都是面向对象的,基类都是Object
public function AS3VarType()
{
// 基础类型是值类型,是不变对象,发生改变会生成一个新的,应该是存储在栈中的不变对象
// 当没有引用指向该变量的时候,变量和它所指向的内存会被AVM回收掉
// 布尔类型
var isTrue:Boolean = true;
// 整型
var aNum:int = 10;
var bigNum:uint = 10000;
// 浮点数
var floatValue:Number = 10.105;
// 字符串类型,都是Unicode字符串,没有char类型
var str:String = "珠珠 爱 吃饭";
var strLen:int = str.length;
// 输出7,这里的length是具体字符的个数,不是字节数,也不包含末尾的\0
trace("strLen value:" + strLen);
// 复杂类型和自定义类型都是引用类型,new创建,堆存放
// 常用复杂数据类型
// 数组存放的类型可以不同,但是一般存放相同类型,存放是值或引用的类型元素
var arr:Array;
// 多维数组实例
var sample2:Array = new Array(new Array(1,2,3), new Array(4,5,6), new
Array(7,8,9));
trace ("multiArray sample:" + sample2[2][1]);
var date:Date;
var err:Error;
var funObj:Function;
var regExp:RegExp;
var xml:XML;
var xmlList:XMLList;
// 自定义的Class类
// const类型,const修饰值类型保证值类型不能修改,修饰引用类型只是保证引用地址不变
const cNum:int = 10;
const cArr:Array = [1,2];
var bArr:Array = cArr;
bArr[0] = 10;
trace("bArr value:" + bArr);
// 数据类型的转换
// 小数转换为整数需要Math.round()来修正
// 对象可以new创建,可以用.或[]访问,或新增成员
var objTest:Object = new Object();
var objTest2:Object = {};
var objTest3:Object = {name1:"sam", name2:"sandy", func1:function()
{trace("sam & sandy");}
};
trace("objtest:" + objTest3.name2);
objTest3.func1();
// 非密封类可以动态添加成员
objTest3.chesName = "岑家源";
objTest3["age"] = 29;
trace("objTest:" + objTest3.chesName);
trace("objTest:" + objTest3["age"]);
var strToNum:String = "a12.3";
// 转换失败的判断
if( !(Number(strToNum)) )
{
var ainum:int = 3;
ainum = ainum + 10;
}
// 转换失败不能用该判断
/*if(Number(strToNum) == NaN)
{
var ainum:int = 3;
ainum = ainum + 10;
}
*/
/*AS不支持用户自定义的运算符重载。
=,==,!=,!==可以作用于所有数据类型,对于复杂数据类型而言,运算符的操作对象是引用,而不是对象值本身。
String对象虽然是基本数据类型,但是和数值类型是有区别的。
*/
// 全等运算符===和==运算符的区别,全等不会进行类型转换,==在比较不同类型时候会转换
// Number类型==运算会比较值,引用类型比较时候会采用引用首地址比较。
/*
typeof返回字符串形式的类型名。
is和as都是判断一个对象是否属于一种类型,is返回true或false, as返回该对象的值或null。
in判断一个对象是否作为一个对象的key或索引。
*/
// delete在as3中只能删除动态增加的属性
// 如果要删除对象,将该对象赋值为null即可,和js其实一样的。
delete objTest3.chesName;
trace("obj delete dynamic property:" + objTest3.chesName);
}
}
}
06-13