Wie eine gehäuselosen Klasse in AS3 getDefinitionByName?
-
05-07-2019 - |
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?
Lösung
Nicht sicher, ob es eine Abhilfe ist, aber nur um zu bestätigen:
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?