zoukankan      html  css  js  c++  java
  • 再次探究As3.0的反射机制

    之前又转载过通过类路径+类名的方式来生产实例(用getDefinitionByName方法)的文章。今天没事又研究了一下这个函数。

    先看之前的例子:

    var tf:Class = getDefinitionByName("flash.text.TextField") as Class;
    var mytf:Object= new tf();
    mytf.text = "哈哈哈";
    trace(mytf is TextField);//输出true
    addChild(mytf);//报错,原因可能是系统以为mytf是Object类而不能调用DisplayObject的方法addChild,但是上面为什么会输出true我也不太清楚
    //addChild(mytf as DisplayObject);//这种方法可以正确显示,如果是以这种方式添加到显示列表时则会转换类型,利用了as关键字

    再看我把Object改为*:

    var tf:Class = getDefinitionByName("flash.text.TextField") as Class;
    var mytf:*= new tf();
    mytf.text = "哈哈哈";
    trace(mytf is TextField);//输出true
    addChild(mytf);//可以正常显示,当上面未声明类型时,系统会自动将该实例的类型转为getDefinitionByName参数中的类
    

    看来为了省事可以把类型声明为*类型,这样后续的操作就不会因为类型不对而烦恼了。

    以上纯属个人意见,有错请指正。

    ==================================================

    作者:绿色花园

    出处:http://www.cnblogs.com/cos2004/archive/2010/11/04/1869409.html

    ==================================================

  • 相关阅读:
    数据库ACID
    tcp ip detatils
    process vs thread
    C++ virtual descructor
    static_cast dynamic_cast const_cast reinterpret_cast总结对比
    Meta Programming
    C++ traits
    c++内存管理
    洛谷 P4136 谁能赢呢?
    洛谷 P1166 打保龄球
  • 原文地址:https://www.cnblogs.com/cos2004/p/1869409.html
Copyright © 2011-2022 走看看