我使用Loader类加载3个外部swfs:
相同的加载程序用于加载所有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,fonts和main swfs(分别)时,我得到以下跟踪语句:
Shell:: assetInitHandler():: evt.currentTarget.content [object MovieClip]
Shell:: assetInitHandler():: evt.currentTarget.content [object FontManager]
Shell:: assetInitHandler():: evt.currentTarget.content [object Main__Preloader__]
我希望最后一个trace语句看起来类似于'[object Main]',它将是文档类的名称,而是内容是加载器。关于为什么会发生这种情况的任何想法?
在稍后的函数中,我尝试调用Main类的init函数并获得以下错误:
Error #1069: Property init not found on classes.Main__Preloader__ and there is no default value.
我希望能够清楚地解释这一点。
提前致谢,
麦克
答案 0 :(得分:3)
罪魁祸首是TLFTextField。默认情况下,在CS5中,“库路径”(在ActionScript3.0设置>库路径中找到)项目设置为运行时共享库并使用默认预加载器,因此将“默认链接”更改为“合并到代码” '你不必担心外部加载这些库......
答案 1 :(得分:0)
看起来main.swf并不打算像你想要的那样间接加载。 zeh有一点,Main可能是SWF的孩子......
如果是这种情况(它看起来像是这样),你应该看看Main.as,找到Main_Preloader的实例并检索它正在加载的url并加载它...或者尝试简单地绕过Main_Preloader或/并在AssetLoading类中重新实现它。