Эффективное прослушивание событий в ActionScript 3 - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть карта предметов, и мне нужно знать, когда мышь перемещается над предметом.Должен ли я добавить прослушиватель событий для наведения мыши и наведения мыши на каждый элемент (их может быть много) или я должен добавить слушателей наведения мыши и наведения мыши на весь контейнер и выполнить некоторую проверку, чтобы определить, есть ли у цели элемент на нем или нет?

Вторым способом это будет означать, что событие произойдет при входе в каждый фрагмент карты в контейнере, который я буду прослушивать.Это кажется немного бессмысленным, но я где-то слышал, что я должен добавить как можно меньше .. Так что мне делать?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Если элементы просто собираются делать то же самое, то я, вероятно, предложил бы с первым и создать простой класс, который вы назначаете объекту.

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");}
  }
}
1 голос
/ 29 сентября 2010

Ну, это вопрос предпочтений.Вы не получите проблемы с производительностью в любом случае.Однако в прослушивателе Event.ENTER_FRAME вы должны быть очень осторожны при написании сценариев, поскольку они выполняются для каждого кадра.

Я думаю, что вы должны добавить Mouse-Listner к элементу, как упоминалось выше.Поскольку слушатель прикреплен к объекту / элементу, он будет удален, когда элемент или объект будет удален сборщиком мусора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...