Actionscript 3 类不';主SWF和从另一个域加载的运行时SWF之间不匹配
我加载一个外部SWF。外部SWF有一个嵌入的显示对象(getChildAt(0)),我得到了它的类的一个实例,代码如下:Actionscript 3 类不';主SWF和从另一个域加载的运行时SWF之间不匹配,actionscript-3,class,flash,cross-domain,Actionscript 3,Class,Flash,Cross Domain,我加载一个外部SWF。外部SWF有一个嵌入的显示对象(getChildAt(0)),我得到了它的类的一个实例,代码如下: public function getEmbedded():* { var _class:Class = loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(getChildAt(0))) as Class; return new _class();
public function getEmbedded():* {
var _class:Class = loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(getChildAt(0))) as Class;
return new _class();
}
到目前为止还不错。如果主SWF(加载上述外部SWF)和外部SWF在同一域中(本地或在线),则主SWF和外部SWF的类匹配:
例如,假设我在外部SWF中嵌入了一个fanlib.tween.TPlayer对象。在主SWF中,我执行以下操作:
var clip3:fanlib.tween.TPlayer = externalSwf.getEmbedded();
而且效果很好
但是强>
如果外部SWF是从另一个域加载的,则类不匹配强>
我会遇到如下错误:
[错误]异常,信息=类型错误:错误#1034:类型强制
失败:无法转换fanlib。tween::TPlayer@2563221到
fanlib.tween.TPlayer
这不是crossDomain的问题,我已经正确设置了XML文件和安全上下文,外部SWF加载时没有安全错误。当尝试将嵌入类强制转换为主对象时,会出现问题
这有什么办法可以解决吗?您可以使用
var clip3:*=externalSwf.getEmbedded()代码>
如果您想免费使用代码警告,请使用界面
var clip3:TplayerInterface=externalSwf.getEmbedded()作为TplayerInterface代码>加载子swf时,是否在加载程序对象上设置加载程序上下文?看,这有什么帮助?嵌入式类继承主swf的一个类。Main将其强制转换为“TPlayer”,但嵌入式类是“TPlayer”的后代?正如您所说,它在同一个域中工作,因此我建议阅读这篇文章,因为它列出了与不同加载程序上下文一起使用时在父关系和子关系中使用的类的各种场景。猜猜看,接口也不匹配:-)