Frage

Sagen Sie bitte einen Flexunit-Tests haben, die wie folgt aussehen:

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{}

, die die Ausnahme auslöst "Error # 1065:. Variable Bar ist nicht definiert" Sie gilt nur für innere Klassen (Klassen außerhalb des Pakets).

Hat jemand eine Möglichkeit, dies zu bekommen zu arbeiten?

War es hilfreich?

Lösung

Nicht sicher, ob es eine Abhilfe ist, aber nur um zu bestätigen:

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

  

getDefinitionByName () Funktion
  public function   getDefinitionByName (name: String): Object   Sprachversion: Actionscript 3.0   Laufzeitversionen: AIR 1.0, Flash   Player 9 Gibt einen Verweis auf die   Klasse Objekt der Klasse angegeben durch   der Name Parameter.

     

Parameter

     

name: String - Der Name einer Klasse.   Rückgabewerte Object - Gibt einen Verweis   auf das Klassenobjekt der Klasse   spezifiziert durch den Parameter name.

     

Wirft Reference - Nicht öffentlich   Definition existiert mit dem angegebenen   Name.

Da sowohl Bar und ChildBar sind nicht-öffentlich, sind Sie, dass Reference bekommen.

Andere Tipps

Ich habe folgenden Code mit Flex getestet 3.3 (AIR-Anwendung):

<?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();
        }        
    }
}

Als Spuren Ergebnis sehe ich:

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

Können Sie das bestätigen? Ist das hilft?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top