zoukankan      html  css  js  c++  java
  • [Flash开发笔记] 正确理解MovieClipLoader的onLoadComplete事件

        在Flash8中,MovieClipLoader类用于实现在 SWF、JPEG、GIF 和 PNG 文件正被加载到影片剪辑中时提供状态信息的侦听器回调。
        它的onLoadComplete事件是当文件完全下载时调用。

        下边给个示例:
    _root.createEmptyMovieClip("holder_mc",1);
    var loader:MovieClipLoader=new MovieClipLoader();
    var lis:Object=new Object();
    lis.onLoadComplete
    =function(target_mc:MovieClip,httpStatus:Number){
        
        holder_mc.removeMovieClip();
        
    }


    loader.addListener(lis);
    loader.loadClip(
    "TEST.swf",holder_mc);

        看看这个示例你们能否正常使用?
        结果是Flash8和Flash9中,都会让Flash崩溃
        问题就出在那句:holder_mc.removeMovieClip();

        按理,这样是不该有错的。
        究竟是什么原因呢?

        试试下边写法:

    _root.createEmptyMovieClip("holder_mc",1);
    var loader:MovieClipLoader=new MovieClipLoader();
    var lis:Object=new Object();
    lis.onLoadComplete
    =function(target_mc:MovieClip,httpStatus:Number){
        
        _global.setTimeout(function () {
              holder_mc.removeMovieClip();
        }, 500);
        
    }


    loader.addListener(lis);
    loader.loadClip(
    "TEST.swf",holder_mc);
        (关于_global.setTimeout,参见flash 8 中的 setTimeout() )

        结果是正常的,Flash没有崩溃。看看二者的差别,问题就在于“延时”差别上。

        那么onLoadComplete事件的含义倒底是什么?都下载完了为什么还不能立马操作呢?具体原因不清楚,我只是猜想:这应该是Windows系统中常有的现象,比如我们下载个大文件,当下载窗口关闭的一刹那,你会发现磁盘上还未出现下载的文件,如果在这时候去操作文件,极有可能是无法操作的错误。如果按照这个道理解释,我想就能理解了,即onLoadComplete事件仅仅代表文件的最后一个字节下载完成,并不代表本地的文件数据处理操作也同时完成,或者说“收尾”工作还在进行,由于脚本执行是很快的,在足够短的时间内,执行删除等操作,即得到了我们不想要的结果。
        除了删除之外,如果给"TEST.swf"中的某些变量赋值,或操作其中的对象的话,也会得到不正确的结果。(这一点我实际遇到了,最终也是用延时的办法解决了。)

        所以,最后得出一个简单的结论:在使用onLoadComplete的时候,如果是对target_mc内部进行操作(删除本身,里面的对象数据访问或更改)时,要进行一点延时,以免出现不想要的结果。





  • 相关阅读:
    IIS文件大小限制
    XAMPP 配置多端口 多站点
    C# 复制文件和文件夹
    Windows下 Python 安装包的配置
    从数据库读取数据绑定到TreeView(内含设置样式,图片)
    异步请求数据简单例子
    Jmeter使用_StringFromFile函数需要添加编码方式
    利用Fitnesse和Jmeter实现接口性能测试
    简易覆盖率信息收集框架
    如何对遗留代码进行单元测试(scrumgathering听后感)
  • 原文地址:https://www.cnblogs.com/yao/p/928870.html
Copyright © 2011-2022 走看看