• ActionScript 3 中的强制类型转换


      刚刚学习Flex,感觉还是不错的,上手很快,类似于Java 和JS的结合,但是语法上又有部分跟Delphi相似,说他是四不像还是独具一格呢?今天突然想到怎么动态向Canvas中的HBOX控件中添加控件,想到了要先获取到HBOX,可是获取出来的都是DisplayObject类型,然。。想到了强制类型转换,于是乎出现了下面这篇文章,呵呵,网上搜到的,感觉不错:

    每一种编程语言都提供强制类型转换,允许你将某一种数据类型转换成另一种数据类型,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  

    PS:原文具体地址不清楚,上一个转载的作者没有贴出来

  • 相关阅读:
    Azure ARM模式下VNet配置中需要注意的几点事项
    scala的传名参数
    scala中如何编写自定义的流程控制结构
    scala打印九九乘法表的5种实现
    kakfa源码编译打包
    kakfa的常用命令总结
    kafka单节点部署无法访问问题解决
    ubuntu下安装gradle
    ubuntu14.04LTS 下storm单机版安装配置
    Mybatis-Generator使用
  • 原文地址:https://www.cnblogs.com/myssh/p/1733996.html
Copyright © 2020-2023  润新知