最近在做一个web-game游戏,项目已经接近尾声,SWF的文件尺寸已经很大,急于分解出多个模块以减少启动时间。
【需求描述】
有三种不同的SWF文件:共享库、模块、外壳/主程序。
目的是在各模块中共享库中的元件,并且外壳加载各模块时不需要过多的参与共享关系。UI负责设计各SWF,程序负责写AS代码。实现和使用应当简单、快速、有效。
【目前的实现】
1,在库中导出元件 MyButton,选择为AS导出,在第一帧导出,指定类名 MyButton
2,在模块中设计并导出元件 MyModule, 里面使用了库中的元件 MyButton,选择 为运行时导入,并指定URL。为了方便使用,给元件 MyButton 取了实例名 m_btn。
(问题:如果取了实例名,则导出影片时会提示无法找到标示符,我的解决方法是定义了一个类文件 MyButton 关联到元件上,然后导出正常)
3,在外壳中首先加载库到当前域(共享域),然后加载模块到子域。 (我的理解:FLASH 加载模块时,发现其中使用了库,于是继续加载库资源。但它发现模块中需要的类 MyButton 在共享域中已经有定义,因此会忽略。结果就是 FLASH 不需要再次加载库,达到了共享的目的)【问题描述】
上述方案在本机(代码、资源都在本地)上测试通过。可当放到网站上时,外壳加载模块时会失败:加载的进度很快达到100%,但一直停留在那里。
我的感觉是模块加载完毕后,继续加载其中的库时---发现共享域中已经存在相同定义而忽略,另一方面模块中的导入元件无法与共享库中的元件建立关联,因此一直无法初始化。
在网站上所有的文件都放在相同路径,应该不会存在安全策略、沙箱问题。
【提问】
FLASH 对于本地、网站上的资源加载策略是否有不同,为什么会出现这样的问题,如何解决?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货