as3学习笔记(三)变量和数据类型

这部分与c++java的数据类型差不多。需要注意的地方列举如下。

 

1.       as3 包括标准模式和严格模式。默认是严格编译模式。也就是有“预编译”,而不是运行时才做检查。

静态类型语言(如 C++ Java)在编译时执行类型检查。动态类型语言(如 jsSmalltalk Python)在运行时执行类型检查。ActionScript 3.0

其实是动态类型的语言,它在运行时执行类型检查,但是它也支持在“严格模式”的特殊编译器模式下在编译时执行类型检查。在严格模式下,类型检查既

发生在编译时也发生在运行时,但是在标准模式下,类型检查仅发生在运行时。

例如:

var mytype;  //在严格模式下将产生编译器警告,在运行模式则不提示

var mytype:int ; //两个模式下都没有问题。

 

也就是说,as3希望你定义变量时最好要指定数据类型。

按理说一个动态语言,灵活性强是它的优点,他偏偏要费事搞个严格模式,小沈阳说,这是为什么呢?

考虑下我们熟悉的JavaScriptjava(或者c#,c++)的区别,我们很容易得出下面的结论:

在构造代码时,动态类型的语言带来了极大的灵活性,但代价是在运行时可能出现类型错误。静态类型的语言在编译时报告类型错误,但代价是要求类型信息在编译时是已知的。在较大的项目中通常建议使用编译时类型检查,因为随着项目变大,相对于尽早捕获类型错误,数据类型的灵活性通常会变得不那么重要。很显然,Adobe公司为了向世人证明flex是适合做大型项目开发的,而抛弃了原来动态语言的“弱类型”,希望你用“强类型”来写效率高的大型程序。

 

2.       int Number类型

int 标识-231 231-1之间的整数

Number ,官方文档是这么说的:在 ActionScript 3.0 中,Number 数据类型可以表示整数、无符号整数和浮点数。但是,为

了尽可能提高性能,应将 Number 数据类型仅用于浮点数。

 

3.       void 数据类型,仅包含一个值:undefined

 

4.       Object 类型:

ActionScript 3.0 中的 Object 数据类型与早期版本中的 Object 数据类型存在以下三方面的区别:第一,Object 数据类型不再是指定给没有类型注释的变量的默认数据类型。第二, Object 数据类型不再包括 undefined 这一值,该值以前是 Object 实例的默认值。第三,在 ActionScript 3.0 中, Object 类实例的默认值是 null

 

var x:Object;  //object类型,默认null

var x  ;//无类型变量,默认undefined

var x:* ;//无类型变量,默认undefined,同var x;

 

5.        is as

as3新增了isas预算符。(这也是向传统的OO语言学习)

is运算符: 返回true或者false,来检查对象是否为特定类的实例,而且还可以检查对象是否是用来实现特定接口的类的实例:

var mySprite:Sprite = new Sprite();

trace(mySprite is Sprite); // true

trace(mySprite is DisplayObject); // true

trace(mySprite is IEventDispatcher); // true

 

注意:在早期的 ActionScript 版本中,此功能由 instanceof 运算符提供。但在ActionScript 3.0 中,不应使用 instanceof 运算符来测试变量或表达式是否为数据类型的成员。对于手动类型检查,应用 is 运算符来代替 instanceof 运算符,因为表达式 x instanceof y 只是在 x 的原型链中检查 y 是否存在(在 ActionScript 3.0 中,原型链不能全面地描述继承层次结构)。

 

as运算符:也可用来检查表达式是否为给定数据类型的成员。但是,与 is 运算符不同的是,as 运算符不返回布尔值,而是返回表达式的值

var mySprite:Sprite = new Sprite();

trace(mySprite as Sprite); // [Sprite 对象]

trace(mySprite as DisplayObject); // [Sprite 对象]

trace(mySprite as IEventDispatcher); // [Sprite 对象]

trace(mySprite as Number); // null

 

6.       常量,ActionScript 3.0 支持 const 语句,该语句可用来创建常量。常量是指具有无法改变的固定值的属性。(还是向传统OO学习)

 

Flash Player API 定义了一组广泛的常量供您使用。按照惯例,ActionScript 中的常量全部使用大写字母,各个单词之间用下划线字符 (_) 分隔。例如,MouseEvent 类定义将此命名惯例用于其常量,其中每个常量都表示一个与鼠标输入有关的事件:

package flash.events

{

public class MouseEvent extends Event

{

public static const CLICK:String = "click";

public static const DOUBLE_CLICK:String = "doubleClick";

public static const MOUSE_DOWN:String = "mouseDown";

public static const MOUSE_MOVE:String = "mouseMove";

...

}

}

posted @ 2009-08-07 13:11  MichaelChen  阅读(932)  评论(0编辑  收藏  举报