2013-11-26 28 views
1

Main.asActionScript获取Class类,这是不是包?

package{ 
    public class Main extends Sprite{ 
     public function Main() { 
      new ProxyClass(new HiddenClass()) 
     } 
    } 
} 

class HiddenClass(){ 
    ... 
} 

ProxyClass.as

package{ 
    public class ProxyClass extends Sprite{ 
     public function ProxyClass(value:*) { 
      trace(value, value.constructor) // [object HiddenClass] [class HiddenClass] 
      switch (value.constructor) { 
       case Sprite: 
        ... 
        break; 
       case "class HiddenClass": //??????? 
        ... 
        break; 
      } 
     } 
    } 
} 

我有一些遗留代码,并不能改变Main.as.我需要在我的ProxyClass中检查Class类型的值,但是HiddenClass已不在包中并且仅对Main.as可见。 我如何验证HiddenClass?

回答

2

好吧,考虑到它不是一个可见的属性,你不会得到它的定义,你很可能不得不重写你的switch语句来使用Strings而不是Object。只需将value.constructor转换为String,然后将其用作case "[class HiddenClass]"

+0

是的,或者使用默认情况并检查'value.constructor'的'toString()'值以匹配HiddenClass。成功匹配后,您可以将类定义缓存在ProxyClass的静态变量中,然后在需要时检查该变量。 – Vesper

0

使用flash.utils.getQualifiedClassName。这是一个全球性的功能,可以为您提供软件包+课程名称。例如:

MyClass       // default package 
com.mycompany.mypackage::MyClass // package com.mycompany.mypackage 

所以基本上:

​​

确认这些字符串是正确的人进行检查,但是当我尝试了几个我自己的类(包括隐藏的一个),它看起来像这些是你会回来的价值。

相关问题