ActionScript3-1简单数据类型

ActionScript3 的数据类型可以分为:简单数据类型和复杂数据类型


简单数据类型: 表示简单的值,是在最低抽象层储存的值,运算速度相对较快

复杂数据类型:类类型,例如 Stage,MovieClip,TextField类型等


AS3的简单数据类型包括: int unitNumber  StringBoolean


int  unit  Number都是表示数字类型

String 表示字符串类型

Boolean 表示 布尔类型


1 int 类型  

int 的最大值  最小值

trace("max:" + int.MAX_VALUE);

trace("max:" + int.MIN_VALUE);

2 了解toString()方法

当使用trace函数的时候,会自动调用toString()方法,Int类的toString()方法返回表示数字的字符串

int 的toString方法可以有参数,可以用来完成进制转换

var a:int = 60;
trace(a.toString(2));//转为二进制
trace(a.toString(8));//转为八进制

和toString方法相反的方法是 parseInt方法

trace(parseInt("110",2))//二进制转为十进制

trace(parseInt("3c0",16))//16进制转为十进制

3 uint类和int类

unit和int Number合称为 数值类型

unit类型是  无符号32位整数,即非负整数。

一般主要用于 表示像素 颜色和其他一些int所不能很高工作的领域

键控代码:在Flash游戏中 ,经常会用到键控代码,键控代码肯定是一个正整数,因为声明一个键控代码的时候,应该声明为uint类型

由于键控代码是不会改变的,所以这种不变得数据容器叫做常量,声明常量使用const关键字

var KEY_A:uint = 65;
var KEY_B:uint = 66;


4 Number类型和Number类

Number类型可以  表示 整数或小数

在Flash里面,整数计算没有误差,浮点数计算总会出现误差。

例如:

trace(0.1+0.2==0.3);//true
trace(0.15+0.15==0.3);//false

所以对于浮点数 千万不能用==来判断两个数是否相等,而是用 ( a < b + 1e - 15)&& (a > b - 1e - 15)来替代 


5 Boolean类型和Boolean类

boolean类型可以用==进行比较


6 String类型和String类

字符串可以使用  单引号或者双引号来声明

特殊的声明:

var s:String = 'hello "actionscrpit"';
trace(s);
trace("---------------------");

var s1:String;
trace(s1);

输出为:

hello "actionscrpit"
---------------------
null

可以得出 没有赋值的String的默认输出为  null

字符串的方法:

var str:String = "abcdefg";
trace(str.charAt(0));
trace(str.length);

7 变量的默认值:

//定义变量 但是没有赋值
var a:Number;
//输出变量的值
trace(a);

输出结果为  NaN

表示  不是一个数字

一般要判断一个变量 是不是NaN,可以使用isNaN函数

//定义变量 但是没有赋值
var a:Number;

trace(isNaN(a));

Actionscript3  默认值

Number :   NaN

String :   null

Boolean :  false

int   :  0

uint :   0


8 变量定义域代码优化

在时间轴上 定义变量有3中方式,使用var定义变量,使用this动态添加变量和直接定义变量。

这三种定义方式中,硬使用var来定义变量,因为它的执行效率最高。‘

1 使用var并且 指明变量类型

var a:Number = 0;
var startTime:int = getTimer();

for(var i=0;i<=100000;i++)
{
	a = (a + 5)*2 /5;
}

trace(getTimer() - startTime);
时间为5

2 使用this

this.a = 0;
var startTime:int = getTimer();

for(var i=0;i<=100000;i++)
{
	this.a = (this.a + 5)*2 /5;
}

trace(getTimer() - startTime);

时间为81


3 未声明类型

var a = 0;
var startTime:int = getTimer();

for(var i=0;i<=100000;i++)
{
	a = (a + 5)*2 /5;
}

trace(getTimer() - startTime);

时间为 30


由上面可以看出: 在程序使用变量的时候,应使用var定义变量,并且要声明变量的准确数据类型。


9 *类型 与自动类型转换

如果编程 时没有生命变量的数据类型,系统会以*类型进行处理,*数据类型是AS3中新增的类型,可以与Object类型配合使用,用来声明不确定的数据类型

*类型可以是  简单类型 也可以是复杂类型

eg

var a:* = 5;

虽然代码是正确的,但是这样声明的*数据类型其实会自动被转换为Number类型,因为变量a的值是5,是数字。

再例如:

FLash的内置类,中有很多动态类,通过类的实例可以动态的添加变量,这样添加的变量不能声明数据类型,实际上这种变量的类型就是 * 数据类型


eg

var obj:*;
obj = 3;
trace(obj);

obj = " hello ";
trace(obj);

这样是可以的。

但是

var obj:int;
obj = 3;
trace(obj);

obj = " hello ";
trace(obj);

这样就不行,因为obj的类型已经明确是int,不能墙砖为string


* 类型的默认值是undefined,而object类型的默认值是null, 如果尝试给一个Object类型的变量赋值undefined,编译器会自动转为null


在AS3 中,任何类都是Object的子类,例如Number类是Object的子类,Array是Object的子类。

所以Object类型也可以像* 类型一样,可以接受任何类型

下面代码是正确的:

var obj:Object;

obj = 433;

obj = true;

obj = [1];

obj = { a : 0};

代码中的,[] {} 分别表示 数组,对象运算符,可以快速创建  数组 和  对象, a=[1] 是创建喊元素1 的数组   a = { a : 0} 表示创建 含x为0的 对象

总结:

1 能确定类型的就一样要指定类型

2 如果不能确定类型,但是能确定引用类型,则用Object

3 如果可能是引用,也可能是基本类型,则用 * 


* 类型变量 与 Object类型变量的主要区别在于:  * 类型变量可以是undefined  而Object类型不能为undefined

他们得默认值分为  undefined  null














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值