2010-09-28 142 views
0

我有一个项目地图,我需要知道鼠标移过项目的时间。我应该添加一个鼠标悬停的事件侦听器,并将鼠标移出到每个项目(可能有很多),或者我应该添加鼠标并将侦听器鼠标移出整个容器,并执行一些检查以检测目标是否具有项目?ActionScript 3中有效的事件监听

在第二种方式中,这意味着在我将要听的容器中输入每个地图块时会发生该事件。这似乎有点毫无意义,但我听说我应该尽可能少地添加..所以我该怎么做?

回答

1

那么它的优先事项。无论如何你都不会遇到性能问题。但是,在Event.ENTER_FRAME Listener中,您应该非常小心地编写脚本,因为这是每帧执行的。

我想你应该像上面提到的那样将Mouse-Listner添加到项目中。由于侦听器附加到对象/项目,当项目或对象被垃圾收集器删除时,它将被删除。

2

如果项目只是要做同样的事情,那么我可能会建议与第一个和创建一个简单的类,你分配给对象。

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");} 
    } 
}