2009-07-26 6 views
0

Je crée un composant de barre d'outils de l'interface utilisateur simple dans Haxe pour une utilisation dans un jeu Flash. La barre d'outils est votre barre d'outils de style d'interface utilisateur générale, elle a un arrière-plan et plusieurs boutons. Lorsque les boutons sont cliqués, une action de jeu se produit.Gestion des événements pour la barre d'outils Utilisation du ciblage Haxe Flash

J'ai une question sur la meilleure façon de mettre en œuvre des événements pour les boutons de barres d'outils. Une classe parent créera une barre d'outils, puis inscrira toutes les fonctions qu'elle souhaite au bouton sur les événements de clic.

Ma solution actuelle ressemble à ceci:

  • La barre d'outils étend la classe de sprite.
  • La classe de barre d'outils possède un sprite enfant pour chaque bouton.
  • Chaque bouton a un écouteur d'événement pour l'événement MouseEvent.Click. Le MouseEvent.Click est géré par une fonction de la barre d'outils qui examine un tableau typé dynamique et exécute chaque fonction contenue dans le tableau.
  • La matrice typée dynamique est publique. Par conséquent, toutes les classes souhaitant s'inscrire au bouton de la barre d'outils sur les événements click peuvent ajouter leur fonction de rappel au tableau.

Code Snippet pour une scène qui a une barre d'outils

this.toolbar = new ToolBar(); 
this.toolbar.OnAttackButtonClicked.push(OnAttackButtonClicked); 

Code Snippet pour créer un bouton dans la barre d'outils

this.attackButton = new Sprite(); 
this.attackButton.addEventListener(MouseEvent.CLICK, this.OnAttackButtonClickListener); 

Code Snippet pour le bouton gestionnaire de clic dans la barre d'outils

private function OnAttackButtonClickListener(event : MouseEvent) : Void 
{ 
    if (this.OnAttackButtonCallbacks != null) 
    { 
     var index:Int = this.OnAttackButtonCallbacks.length; 
     while (index-- > 0) 
     { 
      this.OnAttackButtonCallbacks[index](event); 
     } 
    } 
} 

Je me demande si c'est un bon approche ou s'il y a une meilleure façon de le faire?

Répondre

0

Résolu. Evénements personnalisés utilisés et le répartiteur d'événements.