Come ottenere la definizioneByName di una classe senza pacchetto in AS3?
-
05-07-2019 - |
Domanda
Supponi di avere un test flexunit simile a questo:
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{}
Che genera l'eccezione " Errore n. 1065: la barra delle variabili non è definita. " Si applica solo alle classi interne (classi esterne al pacchetto).
Qualcuno ha un modo per farlo funzionare?
Soluzione
Non sono sicuro se esiste qualche soluzione alternativa, ma solo per confermare:
funzione getDefinitionByName ()
funzione pubblica getDefinitionByName (name: String): Object Versione lingua: ActionScript 3.0 Versioni runtime: AIR 1.0, Flash Giocatore 9 Restituisce un riferimento a oggetto class della classe specificata da il parametro name.I parametri
name: String & # 8212; Il nome di una classe. Restituisce l'oggetto & # 8212; Restituisce un riferimento all'oggetto classe della classe specificato dal parametro name.
Genera Errore di riferimento & # 8212; Nessun pubblico la definizione esiste con il specificato nome.
Dato che sia Bar che ChildBar non sono pubblici, stai ottenendo quel ReferenceError.
Altri suggerimenti
Ho appena testato il seguente codice con Flex 3.3 (app AIR):
<?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();
}
}
}
Come risultato della traccia vedo:
[SWF] DefTest.swf - 1,024,228 bytes after decompression
[class Bar]
Puoi confermarlo? Questo aiuta?