首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApplicationDomain的不幸。动态地将本地.swfs从共享库加载到单独的项目中。失败铸型

ApplicationDomain的不幸。动态地将本地.swfs从共享库加载到单独的项目中。失败铸型
EN

Stack Overflow用户
提问于 2012-07-23 15:41:18
回答 1查看 422关注 0票数 0

我有两个项目,AB,它们引用一个库MyExternalLibraryAB.swfs (两个不同的AS3项目),MyExternalLibrary.swc。当我的应用程序运行时,A会加载B

有一个ClassMyLoader,在MyExternalLibrary中,B广泛使用。MyExternalLibrary.MyLoader加载服务器上存在的.swf(我们不嵌入它们,因为它们是每个用户请求动态加载的)。

请注意,我们的服务器包含AB和我们将要下载的所有.swf

现在,A还必须在我们的服务器上加载一些.swf。因此,A也必须在MyExternalLibrary中使用MyLoader。因此,在A中,我添加了对MyLoader的引用,以便在编译过程中包含它的二进制文件。我只添加一个对MyLoader的引用--我实际上并不实例化或修改它。也就是说,在A的代码中(在加载B之前),我有:

MyLoader;

我(显然)也导入了Class。这确保了MyLoader的二进制文件将包含在A.swf中。

仅仅在A中引用A就破坏了BMyLoader功能--尽管它是一个MovieClip,并且拥有所有正确的字段,但B加载的所有.swf都不会cast到其关联的Class。此外,在调试器中,加载的MovieClip表明它们是正确的Class。例如,如果我加载一个.swf,它将是一个MovieClip;此外,调试器声明它是B.mySwfs.MyClass类型,但我不能将它castB.mySwfs.MyClass。我相信罪魁祸首是ApplicationDomain

请注意,注释掉这一行代码可以使B cast中的所有内容都正常运行。

如果有人知道这是怎么回事,我想听听一些建议。我认为这个问题与ApplicationDomain有关,因为A拥有MyExternalLibrary.MyLoader,我正在尝试将由A加载的MovieClip放到B中的Class中。当我注释掉A中所有对A的引用时,B现在拥有了MyExternalLibrary.MyLoader,因此它可以转换为B中的类。这就是我的预感!

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 18:08:07

解决方案是确保BApplicationDomainAApplicationDomain相同,这是通过在Loader.loadLoader.loadBytes中参数化LoaderContext实例来实现的。

例如,A用以下代码行加载B

m_loader.load(new URLRequest("B.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));

这将B的所有Class定义都添加到A中。因此,当A加载.swf时,MovieClipcast编辑为Class in B,因为AB位于相同的ApplicationDomain中。因此,d22由A加载到cast可以被编辑到d25中的d26。

如果其他人遇到这个问题,我强烈建议大家看看GreenSock的SWFLoader:http://www.greensock.com/as/docs/tween/com/greensock/loading/SWFLoader.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11615843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档