`
lixinye0123
  • 浏览: 333220 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

ActionScript 3 中的强制类型转换

    博客分类:
  • Flex
阅读更多


    每一种编程语言都提供强制类型转换,允许你将某一种数据类型转换成另一种数据类型,AS3自然也不例外。但是虽然我编写了不少Flex程序,对 AS3中的强制类型转换还是不太清楚,以前AS中是这样进行强制类型转换的:假设有一个类叫做Class1,我们声明了一个它的对象 c1,如果想要将它转换成Class2类型,只要这样写:

Class2(c1);

   在AS3中你依然可以这样写,但是AS3 中提供了一个新的操作符: as ,并且推荐使用as 进行强制转换,上述的例子用 as 操作符实现就是这样:

c1 as Class2;

  使用 as 操作符有几个好处:

1.它的效果和第一种方法是一样的。
2.如果类型不兼容无法转换,就会返回null,而不是出错。这样你就可以自定义错误的时候该做什么。
3.没有运行时错误(Run Time Error)提示。

  不过有些时候我在使用 as 的时候并不能达到强制转换的目的,而使用第一种方法则可以。为什么 as 操作符有时候会不好用呢?这个问题困扰了我很久,知道昨天在MXNA上发现了一篇日志,才恍然大悟:原来在AS3.0类库中最高层类(Top Level classes,所有Top Level classes的列表请看这里)之间进行强制转换时, as 操作符是不起作用的。比如,假如你想要将一个String 类型的字符串 str 转换成 Number 类型的数字 num 时,可能想要这样写:

num = str as Number;

  这样写是没有用的,你只能通过第一种方法来达到强制转换的目的:

num = Number(str);

  特别感谢raghuonflex对此做了说明,也希望这些对学习Flex的人有些提示。

  注:以上技巧我只在Flex 中验证过,本人对Flash一窍不通,不保证也适用于 Flash中的 AS3.0  
分享到:
评论

相关推荐

    FLEX强制类型转换

    `as`关键字是AS3中最常用的强制类型转换方式。它的工作原理是尝试将一个对象转换为指定的类型。如果转换成功,则返回转换后的对象;如果转换失败,则返回`null`。 **示例代码**: ```actionscript var c1:Class1 = ...

    ActionScript 3.0编译器编译错误大全

    在AS3中,所有变量必须在使用前声明,否则编译器会抛出错误。 ### 错误1006:`super`关键词误用 `super`关键词只能在子类构造函数或方法中调用父类的方法。如果在非构造函数或非继承类中使用,将导致编译错误。 #...

    Actionscript 3.0 类关系图PDF格式

    8. **类型系统**:ActionScript 3.0 强制类型检查,增强了程序的稳定性和效率。Type转换和类型检测函数(如typeof操作符)也是重要的知识点。 9. **包结构**:ActionScript 3.0 使用包(Package)来组织类,如flash...

    Actionscript Virtual Machine(AVM2)

    - **coerce_a**: 特定类型的强制转换。 - **coerce_s**: 强制转换为字符串。 - **construct**: 创建新对象。 - **constructprop**: 创建具有属性的新对象。 - **constructsuper**: 调用父类构造函数创建对象。 - **...

    新技术培训 培训讲义1_AS3数据类型.doc

    【新技术培训 培训讲义1_AS3数据类型.doc】文档主要涵盖了ActionScript 3.0中的数据类型、类型转换以及运算符等基础知识。ActionScript 3.0是一种面向对象的编程语言,广泛应用于创建Flash动画和应用程序,其语法...

    优秀程序员之路——C#_开发经验及技巧大汇总

    在C#中,当尝试将一个类型转换为另一个类型时,可能会遇到两种类型转换方式:**强制类型转换**和**as类型转换**。 **区别**: - **强制类型转换**:如果转换不合法,则会抛出`System.InvalidCastException`异常。 ...

    数据类型PPT学习教案.pptx

    强制类型转换则是程序员明确指定将表达式的结果转换为特定数据类型,这在处理不同类型变量的混合运算时非常有用。 总之,这个PPT涵盖了数据类型的基本概念,包括常量、变量、存储方式、数据类型的分类和转换,这些...

    flash_action_script_xml

    1. ActionScript 3.0:ActionScript的第三个主要版本,显著提升了性能,增加了面向对象编程特性,并且强制采用严格的类型系统。它改进了语法,使得代码更加简洁和可读。 2. XML:eXtensible Markup Language,是一...

    AS2基础(官方中文)

    变量可以通过var关键字声明,并可自动类型转换。 2. **运算符**:AS2支持算术运算符(+、-、*、/、%)、比较运算符(==、!=、<、>、、>=)以及逻辑运算符(&&、||、!)。 3. **流程控制**:包括条件语句(if......

    AS3.0_AS3殿堂之路_笔记[七月经典]

    - **类型转换**: - 使用特定的数据类型构造函数来转换数据类型,例如 `new Number()` 或 `new String()`。 #### 2.5.12 in 运算符 - **用途**:检查一个属性是否存在于对象中。 ```as property in object; ``...

    flex开发技巧整理.pdf

    `as`关键字用于强制类型转换,但当尝试转换非有效数字时,如`var quantity:Number = 15 - "rabbits"`,虽然`typeof quantity`显示为"number",但实际值是NaN。此时,可以使用`isNaN()`函数检测变量是否包含有效数字...

    FLEX数据与通讯

    需要注意的是,当变量类型不同时,可能需要进行强制类型转换。例如,从`int`类型转换到`Number`类型可以使用`as`操作符或类型转换函数`(Number)`。 ```actionscript var a:int, b:int = 12; a = b; ``` **...

    fortify规则库rules_20170905.zip

    - 类型转换:检查可能导致运行时错误的类型强制转换。 - 安全沙箱:确保遵守Flash Player的安全模型,防止跨域访问或恶意代码执行。 - 内存管理:预防内存泄漏和资源耗尽。 - 配置管理:检查硬编码的服务器地址...

    java TO ArrayCollection

    2. 强制类型转换: `javalist = event.result as ArrayCollection;` 这种方式是利用AS3的类型转换机制,将Java的`List`对象强制转换为`ArrayCollection`。虽然这种方式看起来简单,但实际效果与第一种相同,都是...

    微软ATA考试题C#整理.pdf

    2. C#类型转换:在C# 2005中,int32型变量不能直接隐式转换成char型变量,因为这种转换不被允许。 3. 派生类与抽象类:C#中的派生类可以使用BASE关键字访问基类成员,重新定义的虚函数需添加OVERRIDE关键字。抽象类...

    AS+3.0+学习文档精华版(二).rar

    4. **数据类型系统**:AS 3.0 强制类型,包括基本类型(如int、uint、Number、Boolean、String等)和引用类型(如Object、Array、Class等)。类型转换需要显式进行,提高了代码的稳定性和性能。 5. **垃圾回收机制*...

    AS3 Flex基础知识100条

    4. **对象类型转换**:`as`操作符用于将对象强制转换为其实际类型,如`var obj:Object = "Hello"; var str:String = obj as String;`。 5. **处理非数字(NaN)**:在AS3中,`isNaN()`函数用于检查值是否为非数字。...

Global site tag (gtag.js) - Google Analytics