【发布时间】:2010-10-12 19:21:33
【问题描述】:
我正在使用 Loader 类加载 3 个外部 swf:
- sharedTopics.swf(没有文档类)
- fonts.swf(文档类为 FontManager)
- main.swf(文档类为 Main)
同一个加载器用于加载所有 3 个资产。
__assetLoader = new Loader();
var urlReq:URLRequest = new URLRequest(target.path);
__assetLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, this.preloadProgress);
__assetLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.assetCompleteHandler);
__assetLoader.contentLoaderInfo.addEventListener(Event.INIT, this.assetInitHandler);
__assetLoader.load(urlReq);
在完整的处理程序中,我将加载程序内容添加到影片剪辑中,然后跟踪一个变量:
var swf:DisplayObject = __assetLoader.content;
Debug.doTrace("Shell:: assetCompleteHandler():: content " + swf);
__app.addChild(MovieClip(swf));
当 sharedTopics、字体和主 swfs(分别)被加载时,我得到以下跟踪语句:
Shell:: assetInitHandler():: evt.currentTarget.content [object MovieClip]
Shell:: assetInitHandler():: evt.currentTarget.content [object FontManager]
Shell:: assetInitHandler():: evt.currentTarget.content [object Main__Preloader__]
我希望最后一个跟踪语句看起来类似于“[object Main]”,它是文档类的名称,但内容是加载器。关于为什么会发生这种情况的任何想法?
在稍后的函数中,我尝试调用 Main 类的 init 函数并得到以下错误:
Error #1069: Property init not found on classes.Main__Preloader__ and there is no default value.
我希望解释清楚。
提前致谢,
迈克
【问题讨论】:
-
Main 是如何创建的?显然,它使用了两帧技巧来编译 SWF,这通常在使用 Flex 或使用 SDK -frame 命令行参数时完成。在这种情况下,您必须等待主 SWF 也被初始化,或者以某种方式找出它何时完全可用(完全加载)。可能 Main 不是 SWF,而是它的子级。
-
感谢回复 main.fla 附加了文档类,fla 内部没有任何AS。该类确实包含大量的 AS 和包导入等......我不熟悉你提到的“两帧”技巧。此外,我刚刚添加了一个递归函数,该函数试图调用 init 函数,该函数捕获 init not exitsting on 'Main__Preloader__' 的错误并递归。没有这样的运气。
标签: flash actionscript-3