zoukankan      html  css  js  c++  java
  • 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影片。

  • 相关阅读:
    POJ 1611 The Suspects
    POJ 2001 Shortest Prefixes(字典树)
    HDU 1251 统计难题(字典树 裸题 链表做法)
    G++ C++之区别
    PAT 乙级 1013. 数素数 (20)
    PAT 乙级 1012. 数字分类 (20)
    PAT 乙级 1009. 说反话 (20)
    PAT 乙级 1008. 数组元素循环右移问题 (20)
    HDU 6063 17多校3 RXD and math(暴力打表题)
    HDU 6066 17多校3 RXD's date(超水题)
  • 原文地址:https://www.cnblogs.com/dt1991/p/15247105.html
Copyright © 2011-2022 走看看