我有一个项目地图,我需要知道鼠标何时移到项目上。我应该为每个项目添加鼠标悬停和鼠标移出事件侦听器(可能有很多),还是应该将鼠标悬停和鼠标移出监听器添加到整个容器并进行一些检查以检测目标是否有项目?
在第二种方式中,这意味着该事件将在进入我将要监听的容器中的每个地图图块时发生。这似乎有点毫无意义,但我在某处听说我应该尽可能少地添加.. 那我该怎么办?
我有一个项目地图,我需要知道鼠标何时移到项目上。我应该为每个项目添加鼠标悬停和鼠标移出事件侦听器(可能有很多),还是应该将鼠标悬停和鼠标移出监听器添加到整个容器并进行一些检查以检测目标是否有项目?
在第二种方式中,这意味着该事件将在进入我将要监听的容器中的每个地图图块时发生。这似乎有点毫无意义,但我在某处听说我应该尽可能少地添加.. 那我该怎么办?
如果这些项目只是要做同样的事情,那么我可能会建议第一个并创建一个简单的类,然后分配给该对象。
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Item extends MovieClip {
public function Item() {
this.addEventLister(MouseEvent.OVER, onMouseOver);
this.addEventLister(MouseEvent.OUT, onMouseOut);
}
private function onMouseOver(e:MouseEvent):Void { trace("mouse over"); }
private function onMouseOut(e:MouseEvent):Void {trace("mouse out");}
}
}
那么它的偏好问题。在任何情况下您都不会遇到性能问题。但是,在 Event.ENTER_FRAME 侦听器中,您应该非常小心地编写脚本,因为这是每帧执行的。
我认为您应该如上所述将 Mouse-Listner 添加到项目中。由于监听器附加到一个对象/项目,当垃圾收集器删除项目或对象时将被删除。