2016-03-04 81 views
0

我有getQualifiedDefinitionNames一個問題,當我與AIR 20編譯我得到的Adobe AIR getQualifiedDefinitionNames

主要 gameBg_png $ c19135a2672bad8837da970f47c7278f-30390368

,當我編譯APACH的Flex 4.15.0或Adobe Animate CC,它會按預期返回一切!

主要 Main__gamebg

如何與AIR解決它,那它返回Main__gamebg類?

我的示例代碼:

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]) 
     } 
     } 
    } 
    } 
} 
+0

爲什麼這是一個問題? – BotMaster

+0

假設您正在編譯Air MOBILE(而不是桌面),並且最有可能的iOS爲AOT'ing將生成這些類型的完全合格的類名稱,因爲類的內部平鋪。如果您對類名稱進行了硬編碼,則必須從字符串中解析出唯一的不一致內容,並注意可能的名稱衝突。 – SushiHangover

+0

不,我只使用AIR 20 SDK和FlashDevelop編譯swf,我嘗試使用AIR 20 SDK使用Animate CC(以前稱爲Flash),並且按預期工作! –

回答

0

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