Question

Dites que vous avez un test Flexunit qui ressemble à ceci:

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

Qui lève l'exception "Erreur n ° 1065: la barre de variables n'est pas définie." Cela ne s'applique qu'aux classes internes (classes en dehors du package).

Quelqu'un at-il un moyen de faire en sorte que cela fonctionne?

Était-ce utile?

La solution

Je ne sais pas s'il existe une solution de contournement, mais juste pour confirmer:

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

  Fonction

getDefinitionByName ()
  fonction publique   getDefinitionByName (name: String): Object   Version du langage: ActionScript 3.0   Versions d'exécution: AIR 1.0, Flash   Joueur 9 Renvoie une référence à la   objet de classe de la classe spécifiée par   le paramètre name.

     

Paramètres

     

name: String - Nom d'une classe.   Returns Object - Retourne une référence   à l'objet de classe de la classe   spécifié par le paramètre name.

     

Lance ReferenceError - Pas de public   définition existe avec le spécifié   nom.

Etant donné que Bar et ChildBar ne sont pas publics, vous obtenez cette erreur de référence.

Autres conseils

Je viens de tester le code suivant avec Flex 3.3 (application 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();
        }        
    }
}

Comme résultat de trace, je vois:

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

Pouvez-vous confirmer cela? Est-ce que ça aide?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top