Adobe AIR getQualifiedDefinitionNames

Adobe AIR getQualifiedDefinitionNames

我对 getQualifiedDefinitionNames 有问题,当我用 AIR 20 编译时我得到

Main gameBg_png$c19135a2672bad8837da970f47c7278f-30390368

当我使用 Apach Flex 4.15.0 或 Adob​​e Animate CC 进行编译时,它会按预期返回所有内容!

Main Main__gamebg

如何用 AIR 修复它,它返回 Main__gamebg class?

我的示例代码:

package{
   import flash.display.MovieClip;  
   import flash.events.Event;  

   public class Main extends MovieClip {  

   [Embed(source="../assets/gameBg.png")]  

   public const _gamebg:Class;  

  public function Main() {  
    super();  
    if (stage) init();  
    else addEventListener(Event.ADDED_TO_STAGE, init);  
  }  

 private function init(e:Event = null):void {  

     removeEventListener(Event.ADDED_TO_STAGE, init);  
     var definitions:*;  
     if (this.loaderInfo.applicationDomain.hasOwnProperty("getQualifiedDefinitionNames")) {  
       definitions = this.loaderInfo.applicationDomain["getQualifiedDefinitionNames"]();  
       for (var i:int = 0; i < definitions.length; i++) {  
           trace(definitions[i])  
       }  
      }  
    }  
  }  
}

http://forum.starling-framework.org/topic/getqualifieddefinitionnames-porblem?replies=5#post-90611

这个技巧奏效了。

///////////////
// SomeImage.as
///////////////
[Embed(source="someimage.png")] 
public class SomeImage extends Bitmap{
public function get dimensions(): String{
    return width + "x" + height;}
}

/////////////
// MyClass.as
/////////////
public class MyClas{
   public function foo(): void{
     // Instantiate the bound class to get the embedded image
     var someImage:SomeImage = new SomeImage();

     // ... do whatever you'd like with someImage
     trace("Dimensions: " + someImage.dimensions);
   }
}