当添加事件监听器并定义它们的相应函数时,我发现自己在构造函数的代码中定义了很多函数。像这样:
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时间?
谢谢!
答案 0 :(得分:1)
后一个例子是正确的方法,你应该尝试在相关的类中封装你的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
的{{1}}应该定位您的班级_onClick()
的相关实例,并从那里运行stuff
需要做的任何事情。
这个例子的过程更像是:
stuff
“我已被点击,我应该通知MinimizeButton:
,以便它可以做一些相关的事情。”
而不是:
stuff
“我会坐下来等stuff:
点击,然后我会做所需的。”