主SWF和来自另一个域的运行时加载的SWF之间的类不匹配

时间:2012-05-30 09:45:16

标签: actionscript-3 class flash cross-domain

我加载了一个外部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加载没有安全错误。尝试将嵌入类转换为主对象时会出现问题。

这可以以任何方式解决吗?

1 个答案:

答案 0 :(得分:2)

您可以使用
使用您的代码 var clip3:* = externalSwf.getEmbedded();
如果您想让代码警告免费使用interface
var clip3: TplayerInterface = externalSwf.getEmbedded() as TplayerInterface;