有人可以解释在AS3中getDefinitionByName和getDefinition之间的区别是什么?
当我加载外部SWF时,我无法使用,getDefinitionByName因为我收到错误#1065.
但使用externalSWF_ContentLoaderInfo.applicationDomain.getDefinition工作正常.
那么,为什么getDefinitionByName找不到className?我的意思是,如果定义在加载的SWF的applicationDomain中,为什么不在主SWF中呢?(我正在使用Flex).
Offtopic:我无法创建新标签,所以我无法添加标签getDefinition和getDefinitionByName :(
getDefinition是ApplicationDomain的一个方法,它返回类,名称空间或函数的定义.
getDefinitionByName是来自flash.utils的包级函数,它返回一个可用于实例化新对象的Class对象.该定义必须已加载到ApplicationDomain中的某个位置.
您无法使用外部SWF创建getDefinitionByName的原因是它被加载到单独的ApplicationDomain中.您的第二个示例有效,因为您的目标是正确的ApplicationDomain.要使您的第一个示例正常工作,您必须将外部SWF加载到当前的ApplicationDomain中,如下所示:
var request:URLRequest = new URLRequest("externalSWF.swf");
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
var loader:Loader = new Loader();
loader.load(request,context);
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它将当前的ApplicationDomain作为加载器上下文的属性传递.
| 归档时间: |
|
| 查看次数: |
5678 次 |
| 最近记录: |