在添加事件侦听器和定义它们对应的函数时,我发现自己在构造函数的代码中定义了很多函数。如下所示:
package
{
public class stuff extends Sprite
{
public function stuff()
{
minimizeBtn.addEventListener(MouseEvent.CLICK, minimizeOnClick);
function minimizeOnClick(e:MouseEvent):void
{
//do minimization stuff here
}
}
}
}然而,显然还有另一种选择来定义它,就像类的任何其他方法一样。如下所示:
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时间?
谢谢!
发布于 2012-02-17 10:05:03
后一个示例是正确的方法,您确实应该尝试将addEventListener()和侦听函数封装在相关类中。在您的情况下,可能需要考虑为minimizeBtn创建一个类
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被点击,然后我会做需要做的事情。”
https://stackoverflow.com/questions/9320748
复制相似问题