3

我加载了一个外部 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在同一个域中(本地或在线),则SWF和外部SWF的类匹配

例如,我在外部 SWF 中嵌入了一个fanlib.tween.TPlayer对象。在主要的 SWF 中,我这样做:

var clip3:fanlib.tween.TPlayer = externalSwf.getEmbedded();

它工作正常。

但!!!

如果外部 SWF 是从另一个域加载的,则类不匹配!!!

我收到这样的错误:

[Fault] 异常,信息=TypeError: Error #1034: Type Coercion failed: cannot convert fanlib.tween::TPlayer@2563221 to fanlib.tween.TPlayer。

这不是crossDomain的问题,我已经正确设置了XML文件和安全上下文,并且外部 SWF 加载时没有安全错误。尝试将嵌入类转换为主对象时会出现问题。

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

4

1 回答 1

2

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

于 2012-06-05T23:31:24.963 回答