快速业务通道

从基础开始深入学Flash AS3教程(3)(译文)

作者 凌众技术 来源 网页制作 浏览 发布时间 2012-03-11

类型转换和as操作符

AS允许在需要的时候,将对象的类型改成另外一种匹配的类型,这就是类型转换。AS2和AS3都支持通过像“type(object)”这样的方式进行类型转换。例如,现定义一个数据类型为Object,你可以通过使用类型名称的语法将这个数据转换成另外一种数据类型。如:

var obj:Object = getMyCustomObject();
vay customObj:MyClass = MyClass(obj);

AS3引入了一种新的操作符“as”来进行类型转换。as操作符代替了类型名称语法来改变对象的数据类型。如:

var obj:Object = getMyCustomObject();
vay customObj:MyClass = obj as MyClass;

as操作符的工作方式和AS2中的非常类似。如果转换不可能进行,那么转换的返回值是null。

AS3依旧支持通过type(object)的方式来转换类型,但是,这种方式和以前有一点细微的不同。以前转换失败是返回null,现在转换失败后将抛出一个类型错误(TypeError)。当尝试转换两种对立的数据类型的时候就会失败。例如将一个数据类型转换成另外一个不可能通过联合和继承而得到的类型。

注意:AS上的全局转换方法Class(object)的优先级依旧高于type(object)转换方法。这些方法包括String(),Number(),和Array()等。

7,唯一的类变量

(本文非直接翻译,原文如下:)
In ActionScript 2, variables defined within a class''s body were defined in the class''s prototype object. This was an efficient means to handle variable definitions but it also meant that complex data types (such as Arrays) had a tendency to be "shared" among instances if not explicitly defined for instances within the class constructor. This is no longer a problem with ActionScript 3. Class variables defined in the class body are now unique to each class instance so this problem no longer occurs.

在AS2中,复杂数据类型(比如数组),如果在类体之中,方法之外直接初始化,而不在构造器中初始化,会被理解为“共享”的数据,而被所有的实例共享使用(类似于static的效果)。但是在AS3中不存在这个问题。类变量是每个实例独有的,唯一的变量。如下:

class myClass{
    private var list:Array = [1,2,3]; //在AS2中会有一定问题,AS3中就很好
    public function myClass(){
        //在AS2中,应该在

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号