`
nianshi
  • 浏览: 416317 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

轻松几行让你AS3程序不再“内存泄露”

    博客分类:
  • Flex
阅读更多

请大家定位到Flex3InstallRoot\sdks\3.0.0\frameworks\projects\framework\src\mx\managers\PopUpManagerImpl.as中,看看人家究竟是怎么个设计。

大家请先看
public function addPopUp 这个函数
里面一对代码都是关于如何在PopupManager中创建一个弹出窗口的代码,其中有一点很值得重视…

      // Listen for unload so we know to kill the window (and the modalWindow if modal)
        // this handles _all_ cleanup
        window.addEventListener(Event.REMOVED, popupRemovedHandler);

就是在这里,PopupManager给添加了个Remove事件 的监听器。

跟着,如果我们要去除这个PopUp的时候是调用RemovePopup的,我们看看这个函数是怎么写的

    public function removePopUp(popUp:IFlexDisplayObject):void
    {
        // all we want to do here is verify that this popup is one of ours
        // and remove it from the display list; the REMOVED handler will do the rest
        // (this is so that we never leak memory, popups will self-manage even if
        //  removePopUp is not called).
        if (popUp && popUp.parent)
        {
            const o:PopUpData = findPopupInfoByOwner(popUp);
            if (o)
            {
                const sm:ISystemManager = ISystemManager(popUp.parent);
               
                if (o.topMost)
                    sm.popUpChildren.removeChild(DisplayObject(popUp));
                else
                    sm.removeChild(DisplayObject(popUp));
            }
        }
    }

看见开发 人员自己写的注释没?他意思是说,当执行removeChild的时候,remove时间会自动触发,来给他们做剩下的清理工作。
跟着我们看看popupRemovedHandler
毫无疑问,它对里面的对象 做了一些清理工作,具体就看代码吧......

这个类告诉我们一个很明显的道理:

任何一个DisplayObject被移除的时候都会发出Remove事件。我们只要对这个remove事件进行监听,再进行相关的清理工作就可以了。

 

养成良好的编程习惯。注意一写变量定义范围。不用的对象,事件要及时删除。

分享到:
评论

相关推荐

    史上最牛的程序——几行代码 3d效果

    这是国外某编程大赛第一名的程序,短短的代码行,看似像是机器代码 程序的运行结果是3d动画,很牛的程序! 程序运行时在运行里敲入cmd进入dos界面 然后进入该文本所在文件夹 然后键入debug 然后你就慢慢等待 奇迹的...

    几行代码让你去掉VRMap3.0的使用次数限制

    几行代码让你去掉VRMap3.0的使用次数限制

    142045-应用-Valgrind-发现-Linux-程序的内存问题.doc

    **内存泄漏** 是程序中常见的问题之一,指的是程序分配的内存没有正确地释放。随着时间的推移,这些未释放的内存会积累起来,最终可能导致系统资源耗尽。Valgrind通过其子工具`memcheck`可以检测到内存泄漏,并提供...

    VB程序加超链接_只有几行代码

    本篇将详细介绍如何通过几行简单的代码在VB程序中实现这一功能。 首先,我们需要创建一个新的VB工程。在VB集成开发环境中(IDE),点击“文件”->“新建”->“项目”,选择“标准EXE”或“Windows Forms应用程序”...

    FlashCharts-master_as3chart_cowboynrq_

    AS3是一种面向对象的编程语言,常用于Adobe Flash Professional和Flex Builder等工具,用于构建富互联网应用程序(RIA)。利用AS3,FlashCharts能够生成高质量、高性能的图表,适用于各种统计分析和数据展示需求。 ...

    只有几行代码的(boost测试程序,cgal测试程序,多边形算法,和grabcut的分割程序)

    在"只有几行代码的boost测试程序"中,开发者可能利用了Boost.Test来快速构建和验证代码模块的功能。通过定义测试套件和测试案例,可以方便地检查代码的各种预期行为,确保其按设计工作。 接下来是CGAL,全称为 ...

    使用Xcode和Instruments调试解决iOS内存泄露

    这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode4.5.2先下载一个实现准备好的内存泄露...

    Devexpress GridControl冻结头部几行

    3. 在GridControl的`GridView`对象上,通过编程方式或设计时界面配置列。例如,为每一列设置`FieldName`属性以映射数据源中的字段。 4. 确定需要冻结的头部行数。这可能包括列标题行和其他附加行。例如,如果你有5...

    一个神奇的只有几行代码的Matlab程序-magic.rar

    一个神奇的只有几行代码的Matlab程序-magic.rar ff是(除%外)代码不过十行的程序. 但是运行起来有点诡异哦。 >> ff ans = 0 >> ff ans = 1 >> ff ans = 0 >> ff ans = 1 复制代码

    Python:发送qq邮箱只需几行代码轻松搞定

    Python:发送qq邮箱只需几行代码轻松搞定 在日常业务中,经常会遇到需要程序发邮件提醒自己的情况。例如数据异常、工作任务进度完成情况、今日天气、今日股票行情等各种场景。如果引入发送邮箱以推进预期进度的功能...

    as3.0缓动程序

    AS3.0缓动程序是ActionScript 3.0中用于实现动态动画效果的一种技术,主要通过缓动函数(Tweening Function)来平滑地改变对象的属性值,如位置、透明度等,使得动画过渡更为自然流畅。在这个场景中提到的" ...

    AS3 TweenLite类

    例如,你可以通过几行代码就能让一个显示对象从一个位置移动到另一个位置: ```actionscript import com.greensock.TweenLite; import com.greensock.easing.Linear; var myObject:MovieClip = new MovieClip(); ...

    Android支付宝微信支付封装(几行代码轻松集成)

    在Android应用开发中,集成第三方支付接口,如...通过合理地调用API,结合具体的业务逻辑,开发者可以轻松实现几行代码的快速集成。在实际开发中,还需要关注支付接口的更新和优化,以提供更流畅、安全的支付体验。

    adobe starling as3 flash 3d Starling演讲PPT以及附件

    内容包括AS3 项目源文件两个 包含PDF中提到的例子 以及运行效果SWF10个 在Stage3D出现之前,Flash3D引擎( Papervision3D, Away3D,…)都是软解 CPU是通用处理器,没有为渲染三角形而优化过 Stage3D是一个新的Flash...

    AS3版本TweenLite动画类

    总的来说,AS3版本的TweenLite动画类为ActionScript开发者提供了一套强大且灵活的工具,使他们能够轻松创建出专业级别的动画效果。无论是在简单的移动效果还是复杂的滤镜变换,TweenLite和TweenFilterLite都能提供...

    VB如何运行起来占用最少内存

    通过采用上述技术,可以有效地减少VB程序运行时的内存消耗,并提高程序的整体性能。此外,理解P代码与本机代码的区别对于进一步优化程序也是非常重要的。P代码是一种中间代码,而本机代码则是可以直接被处理器执行的...

    几行代码轻松搞定网页的简繁转换

    对网页进行简繁字体转换的方法一般有两种:一是使用《简繁通》这样的专业软件,另外一种是制作两套版本的网页。...在这里给大家提供一个非常简单的方法,只须在页面上添加几行代码就可以轻松搞定网页的简繁转换了。

    万用封面程序源码及控件下载

    让用户不至于以及程序死机或等待较长的时间,特别开发一个万用封面程序. 此程序为 VC++ 开发,高速打开,然后调用您的主程序.在主程序中增加几行代码可以与封面程序互动.(显示信息,关闭封面) 封面程序还可以检测 ...

    批量删除某文件下txt文件的前几行

    设置要操作的文件夹路径如"d:\"及删除的前N行如3

    Flex 有用的几行代码

    ### Flex 有用的几行代码详解 #### 一、设置剪贴板内容 ```as3 System.setClipboard(strContent); ``` - **知识点说明**:在 Flex 中,`System.setClipboard()` 方法可以用来将指定字符串复制到剪贴板上。这对于...

Global site tag (gtag.js) - Google Analytics