·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]AS3的最常见数据类型相关定义的介绍代码示例

时间:2013-01-27 11:55CuPlayer
对于值类型常量持有的就是值,而引用类型常量持有的是引用,引用类型,常量只能保证持有的引用不变,并不能保证引用对象自身的状态不发生改变

常量定义:(使用关键字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

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器