[AS3]AS3的最常见数据类型相关定义的介绍代码示例
常量定义:(使用关键字const)
eg:
const foo:int = 11;
foo=9; //注:常量不能被重新赋值。
对于值类型常量持有的就是值,而引用类型常量持有的是引用,
引用类型,常量只能保证持有的引用不变,并不能保证引用对象自身的状态不发生改变。
eg:
const foo:Array = [1,2]
var b:Array = foo;
b[1]=100;
trace(foo);
结果:1,100
foo = [2,3];//错,常量不能被改变
布尔类型定义:
var a:Boolean = true;
trace(a);
结果:true
Boolean 定义未赋值时AS3中默认为false,但在AS2中默认为undefined
数值类型定义:
int、uint是整形数值,Number处理浮点数。
int 是有符号32位的整形数,数值范围从负的2的31次方到正的2的31次方减1,留一位来标注正负号
uint 是无符号的32位整形数,范围零到2的32次方减1,一般处理和颜色有关的值0xFFFFFF,基本为这样的像素值准备。
Number 是64位浮点值,类似于双精度浮点值double类型,而AS3只有Number
一般浮点数在计算中出现的bug要用Math.round()来修正
字符串类型定义:
var a:String; 未定义默认为null
var a:String = "";
var a:String = new String(); 用包装类来声明,默认为""
var a:String = "abc";
var a:String = new String("abc");
var a:String = 'abc';
var lenght:Number = a.length
\n表示换行,\r表示回车,\t表示制表,\表示转义符,\\ \' \"此三个字符需要转义
数组类型定义:
var a:Array; 声明了一个数组变量,还没有指向谁,默认为null
var a:Array = []; 声明了一个数组,数组输出空白,不是null了
var a:Array = new Array();声明了一个数组,数组输出空白
var a:Array = [1,2];//1,2
var a:Array = new Array(1,2);
var a:Array = new Array(1);声明一个长度为1的空数组,每个数组元素都为空可用a[0]=1进行赋值。
高级关联数组定义:
关联数组有时候也称为"哈希"或"映射",由键和键值组成。关联数组是键和值对的无序集合。
在as3中引入了名为"字典"的高级关联数组。
字典是 flash.utils 包中 Dictionary 类的实例,使用的键可以为任意数据类型,
但通常为 Object 类的实例。即字典的键不局限于 String 类型的值。
故关联数组的键名分类有以下2种。
1、.键名为字符串:在 as3中有两种创建关联数组的方法。
a).使用 Object 构造函数
Object 类的实例(也称作"通用对象")在功能上等同于关联数组。
通用对象的每个属性名称都用作键,提供对存储的值的访问。
如:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// 输出:Flat Panel 1600 x 1200
若在声明数组时不需要初始化,则以[] 或者 . 添加值。
如:
var monitorInfo:Object = new Object();
monitorInfo["aspect ratio"] = "16:10";
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// 输出:16:10 16.7 million
b)用 Array 构造函数,如果将关联数组声明为 Array 类型,则将无法使用对象文本初始化该数组。
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// 输出: Flat Panel 1600 x 1200
用 Array 构造函数创建关联数组没有什么优势。即使使用 Array 构造函数或 Array 数据类型,也不能将 Array 类的 Array.length 属性或任何方法用于关联数组。 最好将 Array 构造函数用于创建索引数组。
即不赞成用array做字典以及哈希组织数据。
2、键名为对象
用 Dictionary 类创建使用对象而非字符串作为键的关联数组。
如,考虑这样一个应用程序,它可根据 Sprite 对象与特定容器的关联确定 Sprite 对象的位置。
可以使用 Dictionary 对象,将每个 Sprite 对象映射到一个容器。
如下例子:
import flash.display.Sprite;
import flash.utils.Dictionary;
var groupMap:Dictionary = new Dictionary();
// 作为键名的对象
var spr1:Sprite = new Sprite();
var spr2:Sprite = new Sprite();
var spr3:Sprite = new Sprite();
// 用作值的对象
var groupA:Object = new Object();
var groupB:Object = new Object();
// 在字典中创建新的键-值对。
groupMap[spr1] = groupA;
groupMap[spr2] = groupB;
groupMap[spr3] = groupB;
if (groupMap[spr1] == groupA)
{
trace("spr1 is in groupA");
}
if (groupMap[spr2] == groupB)
{
trace("spr2 is in groupB");
}
if (groupMap[spr3] == groupB)
{
trace("spr3 is in groupB");
}
对象及关联数组定义:
var a:Object = new Object();使用构造函数
var a:Object = {};使用大括号对作为new 0bject()函数的语法快捷方式
eg1:
var a:Object = {a:1,b:2};
trace(a.b);
结果:2
eg2:
var aa:Object = {
hello : function():void{
trace('hello');
},
ok : function():String{
return "ok";
}
}
aa.hello();
trace(aa.ok());
结果:hello
ok
eg3:
var aa:Object = {};
aa.a=1;
aa.b = function():int{
return 2;
}
trace(aa.b())
结果:2
eg4:
var a:Object={};
var b:Date = new Date();
var c:String;
if (b.getTime()%2==0) {//注:b.getTime()得到当前unix时间戳
c="名字";
} else {
c="name";
}
a[c]="黑羽";//注:由于c此时为变量,若用a.c="黑羽";的形式。for… in遍历出的键值还是变量本身c
for (var i in a) {
trace('当前属性名' + i + ",当前属性值" + a[i]);
}
结果:当前属性名name,当前属性值黑羽
eg5:
var a:Object = {};
a['web'] = 'www.baidu.com';//数组与对象的通用形式
trace(a.web);
结果:www.baidu.com
Null , NaN ,undefined类型定义
var a:int, b:uint, c:Number; 默认值分别为0 0 NaN(不是一个数)
var d:String, e:Boolean; 默认值分别为null false
var f:Array; 默认值 null
var g:Object; 默认值 null
var h; 未声明类型,默认值undefined
var i:*; 未声明类型 默认值undefined
As2中只要未声明变量都默认为undefined
var a:Number //先声明一个没有初始化的Number变量a
var b:Number = 10
var c:Number = a + b //NaN
var d:Number = b - a //NaN
var e:Number = b * a //NaN
var f:int = b - a //0
var h:uint = b + a //0 将默认值赋给不相同的类型,会自动转换成被赋值类型的默认值var b:Boolean =NaN 值为false
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例