Actionscript 3 Adobe AIR getQualifiedDefinitionNames
我对getQualifiedDefinitionNames有一个问题,当我使用AIR 20编译时,我得到 主要 gameBg_巴布亚新几内亚$c19135a2672bad8837da970f47c7278f-30390368 当我使用Apach Flex 4.15.0或Adobe Animate CC编译时,它会按预期返回所有内容 主要 主要游戏背景 如何用AIR修复它,它返回了Main_uuugamebg类 我的示例代码:Actionscript 3 Adobe AIR getQualifiedDefinitionNames,actionscript-3,apache-flex,air,Actionscript 3,Apache Flex,Air,我对getQualifiedDefinitionNames有一个问题,当我使用AIR 20编译时,我得到 主要 gameBg_巴布亚新几内亚$c19135a2672bad8837da970f47c7278f-30390368 当我使用Apach Flex 4.15.0或Adobe Animate CC编译时,它会按预期返回所有内容 主要 主要游戏背景 如何用AIR修复它,它返回了Main_uuugamebg类 我的示例代码: package{ import flash.display.Mo
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])
}
}
}
}
}
包{
导入flash.display.MovieClip;
导入flash.events.Event;
公共类Main扩展了MovieClip{
[嵌入(source=“../assets/gameBg.png”)]
公共建筑:类;
公共函数Main(){
超级();
if(stage)init();
else addEventListener(Event.ADDED_TO_STAGE,init);
}
私有函数init(e:Event=null):void{
removeEventListener(Event.ADDED_TO_STAGE,init);
风险值定义:*;
如果(this.loaderInfo.applicationDomain.hasOwnProperty(“getQualifiedDefinitionNames”){
定义=this.loaderInfo.applicationDomain[“getQualifiedDefinitionNames”]();
对于(var i:int=0;i
这个把戏奏效了
///////////////
// 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);
}
}
为什么这是一个问题?假设您是为Air MOBILE(而不是桌面)编译的,并且很可能作为AOT’ing的iOS会由于类的内部扁平化而生成这些类型的完全限定类名。如果你是硬编码类名,你必须从字符串中解析唯一的缩进符,并观察可能出现的名称冲突。不,我只使用AIR 20 SDK和FlashDevelop编译swf,我尝试使用AIR 20 SDK的Animate CC(以前的Flash),它工作正常!您没有回答这个问题,为什么这是一个问题?我将swf作为库加载,并使用applicationDomain.getDefinition获取类