我在库中有一个MovieClip,我通过addChild方法动态加载。
我面临的问题是: -
我有一个Main Class,它与其他几个类和几个FLA一起运行。
Main Class调用一个子类函数,该函数反过来调用FLA框架中的代码,该框架从库中加载该对象。
此对象并非存在于所有FLA 中,这就是我遇到困难,导致编译时间错误。
尝试通过此检查但失败了:(
var classExist:Boolean = isClassExists(“CTRL_ALARM”);
function isClassExists(className:String,domain:ApplicationDomain = null):Boolean { var res:Boolean;
if(domain)
{
res = domain.hasDefinition(className);
}
else
{
// res = getDefinitionByName(className);
//or the same
res = ApplicationDomain.currentDomain.hasDefinition(className);
}
trace(res);
return res;
}
有没有办法可以在as3中复制Stage上的对象,或者如果对象不存在于库中,如何限制编译对象?
答案 0 :(得分:0)
尝试以下方法。如果所有SWF都在同一个沙箱中,它可能会起作用:
import flash.utils.getDefinitionByName;
var AlarmClass:Class = getDefinitionByName("CTRL_ALARM");
var anAlarm:DisplayObject = new AlarmClass;
然后,为了使其在沙箱限制下工作,您可以通过加载的SWF寻找您想要的定义:
// This should contain Loader objects with your loaded SWFs.
var aList:Array;
for each (aLoader:Loader in aList)
{
// Get reference to loaded app domain.
var aDomain:ApplicationDomain = aLoader.contentLoaderInfo.applicationDomain;
// Check if such a class is in that SWF.
if (aDomain.hasDefinition("CTRL_ALARM"))
{
var AlarmClass:Class = aDomain.getDefinition("CTRL_ALARM");
var anAlarm:DisplayObject = new AlarmClass;
break;
}
}