首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3 -在其他函数中定义函数

AS3 -在其他函数中定义函数
EN

Stack Overflow用户
提问于 2012-02-17 07:31:58
回答 1查看 2.1K关注 0票数 0

在添加事件侦听器和定义它们对应的函数时,我发现自己在构造函数的代码中定义了很多函数。如下所示:

代码语言:javascript
复制
package
    {
        public class stuff extends Sprite
        {
            public function stuff()
            {
                minimizeBtn.addEventListener(MouseEvent.CLICK, minimizeOnClick);
                function minimizeOnClick(e:MouseEvent):void
                {
                       //do minimization stuff here
                }
            }
        }
    }

然而,显然还有另一种选择来定义它,就像类的任何其他方法一样。如下所示:

代码语言:javascript
复制
 package
    {
        public class stuff extends Sprite
        {
            public function stuff()
            {
                minimizeBtn.addEventListener(MouseEvent.CLICK, minimizeOnClick);
            }

            internal function minimizeOnClick(e:MouseEvent):void
            {
                //do minimization stuff here
            }
        }
    }

第二种选择可能没有实际意义,因为该函数实际上不是类的方法。但我担心的是,第一个方法将占用类的每个实例的额外内存。执行此操作的最有效和正确的方法是什么?第一种方法是否会为类的每个实例占用额外的内存或CPU时间?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-02-17 10:05:03

后一个示例是正确的方法,您确实应该尝试将addEventListener()和侦听函数封装在相关类中。在您的情况下,可能需要考虑为minimizeBtn创建一个类

代码语言:javascript
复制
public class MinimizeButton extends SimpleButton
{

    public function MinimizeButton()
    {
        addEventListener(MouseEvent.CLICK, _onClick);
    }

    private function _onClick(e:MouseEvent):void
    {
        // do minimization stuff here
    }

}

然后,MinimizeButton_onClick()应该以类stuff的相关实例为目标,并从那里运行stuff需要执行的任何操作。

此示例的过程更类似于:

MinimizeButton:“我被点击了,我应该通知stuff,这样它才能做一些相关的事情。”

而不是:

stuff:“我会坐下来等待MinimizeButton被点击,然后我会做需要做的事情。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9320748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档