的Adobe AIR getQualifiedDefinitionNames
问题描述:
我有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])
}
}
}
}
}
答
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);
}
}
为什么这是一个问题? – BotMaster
假设您正在编译Air MOBILE(而不是桌面),并且最有可能的iOS为AOT'ing将生成这些类型的完全合格的类名称,因为类的内部平铺。如果您对类名称进行了硬编码,则必须从字符串中解析出唯一的不一致内容,并注意可能的名称冲突。 – SushiHangover
不,我只使用AIR 20 SDK和FlashDevelop编译swf,我尝试使用AIR 20 SDK使用Animate CC(以前称为Flash),并且按预期工作! –