假设你有一个如下所示的flexunit测试:

package foo {
    import flexunit.framework.TestCase;
    import flash.utils.getDefinitionByName;
    import flash.utils.getQualifiedSuperclassName;
    class DescribeTypeTest {
      public function testDescribeInnerType():void {
        var currentInstance:ChildBar = new ChildBar();
        trace(getDefinitionByName(getQualifiedSuperclassName(currentInstance)));
      }
    }
}
class Bar{}
class ChildBar extends Bar{}

抛出异常“错误#1065:未定义变量条。”它仅适用于内部类(包外的类)。

有没有人有办法让这个工作?

有帮助吗?

解决方案

不确定是否有任何解决方法,只是为了确认:

http://livedocs.adobe的.com /闪光/ 9.0 / ActionScriptLangRefV3 /闪光/ utils的/ package.html的#getDefinitionByName()

  

getDefinitionByName()函数
  公共职能   getDefinitionByName(名称:字符串):对象   语言版本:ActionScript 3.0   运行时版本:AIR 1.0,Flash   播放器9返回对的引用   由类指定的类的类对象   name参数。

     

参数

     

name:String—一个类的名称。   返回对象—返回一个引用   到类的类对象   由name参数指定。

     

引发ReferenceError—不公开   定义存在于指定的   名称

由于Bar和ChildBar都是非公开的,因此您将获得ReferenceError。

其他提示

我刚刚使用Flex 3.3(AIR app)测试了以下代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="t();">
    <mx:Script>
        <![CDATA[
            import flash.utils.describeType;
            import flash.utils.getQualifiedSuperclassName;
            private function t():void {
                trace(getDefinitionByName(getQualifiedSuperclassName(new FooBar())));
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>

Bar.as

package
{
    public class Bar
    {
    }
}

FooBar.as

package
{
    public class FooBar extends Bar
    {
        public function FooBar()
        {
            super();
        }        
    }
}

作为跟踪结果,我看到:

[SWF] DefTest.swf - 1,024,228 bytes after decompression
[class Bar]

你能证实吗?这有帮助吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top