• AS3.0 卸载子SWF文件 unloadAndStop()方法的注意事项


    转载:http://blog.sina.com.cn/s/blog_4d4d25f50101tan2.html

     在flash游戏中加载新关卡,可以采用loader来在原SWF的基础上加载外来的子SWF文件。

        在主SWF的时间轴上:

         var level1:Loader=new Loader();

        level1.load(new URLRequest("level1.swf"));
        level1.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
        function onComplete(e:Event) {
           stage.addChild(level1);
        }

         这样,level1.swf就会像一个影片剪辑一样覆盖在舞台上,此时主SWF仍然存在。

        如果主角死亡或者其他关卡需要切换的情况时,比较理想的方法是先卸载当前的子swf文件,或者接着加载下一个子swf文件(下一关)。一般的教程会说使用loader的unloadAndStop()方法来彻底卸载子swf文件。但是在实际情况下会出现子swf文件从舞台消失后却不能对主swf文件进行操作,而且子swf文件中的一些影片剪辑会莫名其妙的留在舞台上,这是怎么回事呢?

       我解决了很久,终于发现了问题,unloadAndStop()这个方法,的确可以删除子swf文件中的各种元件和侦听器,但是只限于该文件被加载到舞台之前就已经存在的元件和侦听器。换句话说,如果是子swf文件运行过程中创建了新的对象和侦听器,unloadAndStop()方法是没有办法把它们删除的,因此导致子swf消失后,有些元件却还没有消失。而且没有办法对主swf进行操作。

       如何解决呢?一个可行的办法就是仔细查看代码,每一个在子swf运行之后被创建的对象和侦听器都要在子swf文件被卸载之前清除。

        由此可以看到使用loader来加载新的关卡并不是一个很好的选择,它更适合用来加载没有交互性的swf影片。

  • 相关阅读:
    从头认识java-2.2 算术操作符
    从头认识java-2.1 操作符
    从头认识java-1.8 创建和操纵对象(2)
    从头认识java-1.8 创建和操纵对象(1)
    从头认识java-1.7 单根继承与集合
    从头认识java-1.6 多态
    从头认识java-目录
    颜色
    内部CSS
    外部CSS
  • 原文地址:https://www.cnblogs.com/dt1991/p/15247105.html
Copyright © 2020-2023  润新知