2016-03-04 97 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); 
    } 
}