문제

다음과 같이 보이는 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/flash/9.0/actionscriptlangrefv3/flash/utils/package.html#getdefinitionbyname ():

getDefinitionByName () 함수입니다
public function getDefinitionByName (이름 : String) : 객체 언어 버전 : ActionScript 3.0 런타임 버전 : AIR 1.0, Flash Player 9는 이름 매개 변수로 지정된 클래스의 클래스 개체에 대한 참조를 반환합니다.

매개 변수

이름 : 문자열 - 클래스의 이름. 반환 객체 - 이름 매개 변수로 지정된 클래스의 클래스 객체에 대한 참조를 반환합니다.

참조 오류를 던지기 - 지정된 이름으로 공개 정의가 존재하지 않습니다.

막대와 가드 바는 모두 비공개이므로 참조 오류를 얻을 수 있습니다.

다른 팁

방금 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