我有一个定义Widget基类的父SWF文件。
然后我将外部SWF加载到父级中。外部SWF的文档类派生自Widget基类 - 例如,我们称之为DerivedWidget。
问题是当我加载外部SWF时,我无法将Loader.content(在调试器中显示为具有DerivedWidget类型)转换为Widget类型。我使用“as”运算符在加载完成后将内容强制转换为父SWF中的Widget,但转换结果为“null”。
这种行为是不期望的,因为外部SWF被加载到父的应用程序域中,并且Loader的内容在调试器中显示为DerivedWidget,我知道它来自Widget,但是对基础Widget类的强制转换是失败的
任何人都可以解释这种意外行为并提供解决方案吗?
[编辑:回顾一下之前的代码快照...这之前有效,但现在不是......并且加载和转换代码没有改变]
[编辑2:实际上,在Flash IDE中调试时似乎失败了。正常运行时,所有内容都加载到正确的ApplicationDomain中(sameDomain = true);这显然是一个巨大的错误]
答案 0 :(得分:0)
DocumentClass继承的方式存在一些错误。
http://bugs.adobe.com/jira/browse/FP-2999(需要登录adobe的bug追踪器)
我的建议是将它从舞台上取下并通过图书馆导出,它将从那里开始工作。事实上,我的经验法则是“永远不要使用文档类。”
答案 1 :(得分:0)
我遇到过类似的问题。解决方案有两个方面。
使用DerivedWidget(mc)
代替mc as DerivedWidget
。有一些文章解决了这个问题,你需要找到它。
确保在两个编译环境中都可以访问类DerivedWidget
。如果您使用Module或invovle不同的Flash域,请更加小心。