我有一个项目地图,我需要知道鼠标移过项目的时间。我应该添加一个鼠标悬停的事件侦听器,并将鼠标移出到每个项目(可能有很多),或者我应该添加鼠标并将侦听器鼠标移出整个容器,并执行一些检查以检测目标是否具有项目?ActionScript 3中有效的事件监听
在第二种方式中,这意味着在我将要听的容器中输入每个地图块时会发生该事件。这似乎有点毫无意义,但我听说我应该尽可能少地添加..所以我该怎么做?
我有一个项目地图,我需要知道鼠标移过项目的时间。我应该添加一个鼠标悬停的事件侦听器,并将鼠标移出到每个项目(可能有很多),或者我应该添加鼠标并将侦听器鼠标移出整个容器,并执行一些检查以检测目标是否具有项目?ActionScript 3中有效的事件监听
在第二种方式中,这意味着在我将要听的容器中输入每个地图块时会发生该事件。这似乎有点毫无意义,但我听说我应该尽可能少地添加..所以我该怎么做?
那么它的优先事项。无论如何你都不会遇到性能问题。但是,在Event.ENTER_FRAME Listener中,您应该非常小心地编写脚本,因为这是每帧执行的。
我想你应该像上面提到的那样将Mouse-Listner添加到项目中。由于侦听器附加到对象/项目,当项目或对象被垃圾收集器删除时,它将被删除。
如果项目只是要做同样的事情,那么我可能会建议与第一个和创建一个简单的类,你分配给对象。
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");}
}
}