J'ai une carte d'éléments et j'ai besoin de savoir quand une souris se déplace sur l'élément. Devrais-je ajouter un écouteur d'événement pour la souris et la souris à chaque élément (il peut y avoir beaucoup) ou je devrais ajouter des écouteurs souris et souris au conteneur entier et faire des vérifications pour détecter si la cible a un objet dessus ou non ? En second lieu, cela signifierait que l'événement se produirait à l'entrée de chaque carte dans le conteneur que j'écouterais. Cela semble un peu inutile, mais j'ai entendu quelque part que je devrais ajouter le moins possible. Alors que dois-je faire?Écoute efficace des événements dans ActionScript 3
0
A
Répondre
1
Bien sa question de préférence. Vous n'obtiendrez pas de problème de performance dans tous les cas. Cependant, dans le gestionnaire d'écoute Event.ENTER_FRAME, vous devez être très prudent lors de l'écriture des scripts, car ils sont exécutés par image.
Je pense que vous devriez ajouter Mouse-Listner à l'élément comme mentionné ci-dessus. Comme les écouteurs sont attachés à un objet/élément, ils seront supprimés lorsque l'élément ou l'objet est supprimé par Garbage Collector.
2
Si les éléments vont juste faire la même chose, alors je suggérerais probablement avec le premier et créer une classe simple que vous assignez à l'objet.
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");}
}
}