2010-03-12 3 views
0

J'ai une classe affaires, Spam et la classe de vue correspondante, SpamView.ActionScript/Flex: Augment MouseEvents avec des informations supplémentaires

Comment puis-je augmenter MouseEvent s sortant de SpamView de sorte que les MouseEvent s qui en sortent contiennent une référence à l'instance de Spam que le SpamView affiche?

Voilà comment je voudrais l'utiliser:

class ViewContainer { 
    ... 
     for each (spam in spams) { 
      addChild(new SpamView(spam)); 
    ... 

    function handleMouseMove(event:MouseEvent) { 
     if (event is SpamViewMouseEvent) 
      trace("The mouse is being moved over spam:", spam) 
    } 
} 

Merci!

choses que j'ai considéré que ne fonctionnent pas:

  • Ajouter événement auditeurs à chaque SpamView: la tenue de livre (en vous assurant qu'ils sont ajoutés/supprimés correctement) est une douleur.

  • Utilisation event.target: peut-être un enfant du SpamView (ce qui est très utile)

  • À l'écoute d'un MouseEvent, la création d'une nouvelle SpamViewMouseEvent cible de l'événement, la copie de tous les champs sur, puis dispatching que : copier tous les champs manuellement est également une douleur.

Répondre

0

Il existe plusieurs façons de résoudre ce chiot. J'utiliserais votre option n ° 2, mais construisais une fonction utilitaire qui récupérait tous les spamViews à l'écran et faisais quelques if-elses en bouclant tes spamViews.

var Targ: DisplayObject = DisplayObject (event.target)

Si (Targ est SpamView) // alors vous savez ce qui se passe.

Si (loopedSpamView.contains (targ)) // alors la cible est dans le spamViewContainer et vous devriez être cool.

Bonne chance, Jeremy

Questions connexes