AS3 - 跟踪swf(文档类)的Loader类问题

时间:2010-10-12 19:21:34

标签: flash actionscript-3

我使用Loader类加载3个外部swfs:

  1. sharedTopics.swf(没有文档类)
  2. fonts.swf(文档类为FontManager)
  3. main.swf(文档类为Main)
  4. 相同的加载程序用于加载所有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.
    

    我希望能够清楚地解释这一点。

    提前致谢,

    麦克

2 个答案:

答案 0 :(得分:3)

罪魁祸首是TLFTextField。默认情况下,在CS5中,“库路径”(在ActionScript3.0设置>库路径中找到)项目设置为运行时共享库​​并使用默认预加载器,因此将“默认链接”更改为“合并到代码” '你不必担心外部加载这些库......

答案 1 :(得分:0)

看起来main.swf并不打算像你想要的那样间接加载。 zeh有一点,Main可能是SWF的孩子......
如果是这种情况(它看起来像是这样),你应该看看Main.as,找到Main_Preloader的实例并检索它正在加载的url并加载它...或者尝试简单地绕过Main_Preloader或/并在AssetLoading类中重新实现它。