我加载了一个外部SWF。 外部SWF 有一个嵌入式 DisplayObject (getChildAt(0)),我得到了 Class 的实例以下代码:
public function getEmbedded():* {
var _class:Class = loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(getChildAt(0))) as Class;
return new _class();
}
到目前为止一切顺利。如果主SWF (加载上述外部SWF)和外部SWF 位于同一域(本地或在线),则主<的类/ strong>和外部 SWF 匹配:
E.g。说我在外部SWF中嵌入了 fanlib.tween.TPlayer 对象。在主要的SWF我做:
var clip3:fanlib.tween.TPlayer = externalSwf.getEmbedded();
它工作正常。
BUT !!!
如果从其他域加载外部SWF,则这些类不匹配!!!
我得到这样的错误:
[Fault] exception,information = TypeError:错误#1034:输入强制 失败:无法将fanlib.tween :: TPlayer @ 2563221转换为 fanlib.tween.TPlayer。
这不是 crossDomain 的问题,我已正确设置 XML 文件和安全上下文,并且外部SWF加载没有安全错误。尝试将嵌入类转换为主对象时会出现问题。
这可以以任何方式解决吗?
答案 0 :(得分:2)
您可以使用
使用您的代码
var clip3:* = externalSwf.getEmbedded();
如果您想让代码警告免费使用interface
var clip3: TplayerInterface = externalSwf.getEmbedded() as TplayerInterface;