2010-09-28 14 views
0

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

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