0

我有一个定义 Widget 基类的父 SWF 文件。

然后我将外部 SWF 加载到父级中。外部 SWF 的文档类派生自 Widget 基类——例如,我们称它为 DerivedWidget。

问题是当我加载外部 SWF 时,我无法将 Loader.content(在调试器中显示为具有 DerivedWidget 类型)转换为 Widget 类型。加载完成后,我使用“as”运算符将内容转换为父 SWF 中的 Widget,但转换结果为“null”。

这种行为不是预期的,因为外部 SWF 被加载到父应用程序域中,并且加载器的内容在调试器中显示为 DerivedWidget,我知道它是从 Widget 派生的,但是转换为基 Widget 类失败了。

谁能解释这种意外行为并提供解决方案?

[编辑:回顾早期的代码快照......这以前可以工作,但现在不行......并且加载和强制转换代码没有改变]

[Edit2:实际上,在 Flash IDE 中调试时似乎失败了。正常运行时,所有内容都加载到正确的 ApplicationDomain (sameDomain=true);这显然是一个巨大的错误]

4

2 回答 2

0

我遇到过类似的问题。解决方案有两个。

  1. 使用DerivedWidget(mc), 而不是mc as DerivedWidget. 有一些文章解决了这个问题,你需要找出来。

  2. 确保DerivedWidget在两个编译环境中都可以访问该类。如果您使用 Module 或涉及不同的 Flash 域,请更加小心。

于 2009-12-14T01:46:11.760 回答
0

DocumentClass 进行继承的方式存在一些错误。

http://bugs.adobe.com/jira/browse/FP-2999(需要登录adobe的bug tracker)

我的建议是将其从舞台上取下并通过库导出,它将从那里开始工作。事实上,我的经验法则是“从不使用文档类”。

于 2009-12-02T19:31:29.733 回答