2010-03-24 3 views
0

J'écris un MS Paint comme programme simple en Flash avec pur ActionScript 3,0Actionscript EventDispatcher dans le programme Paint

  • Une barre d'outils qui vous permet de sélectionner quelle forme (étoile, coeur ...) vous voulez dessiner
  • Une autre barre d'outils pour les options de couleur, où chaque bouton est une couleur (rouge, vert). il y a 10 couleurs au total.
  • Ensuite, il y a la toile, où les formes seront dessinées en cliquant.

J'ai les classes suivantes

class Main extends sprite 
class ColorButton extends sprite 
class ShapeButton extends sprite 

class Star() extends sprite // star object to be added to Main (canvas) 
class Heart() extends sprite // heart object to be added to Main (canvas) 

Depuis que je suis nouveau à l'AS Je ne suis pas sûr de savoir comment/où enregistrer l'état (sélection de l'utilisateur). Comment cliquer sur un bouton peut-il changer ce que fait un clic sur la toile? Je pense que je dois utiliser EventDispatcher? Pourriez-vous me diriger vers la bonne direction?

Répondre

0

Vous avez deux choix, soit vous pouvez faire une classe statique qui peut contenir toutes les informations, soit il peut être tenu dans votre classe de toile, cela dépend beaucoup d'autres fonctionnalités mais par souci de simplicité j'utiliserais la toile .

utiliser le EventDispatcher dont vous avez besoin pour créer et écouter des événements, par exemple, vous pouvez écouter l'événement de souris vers le haut à l'aide:

ShapeButton.addEventListener(MouseEvent.MOUSE_UP, changeShape); 

qui sera ensuite appeler la fonction changeShape, qui dans ce cas serait probablement mis une variable de la forme de la "brosse". Personnellement, j'utiliser la variable pour tenir une référence à l'image-objet qui serait de peindre la forme, par exemple:

private var paintShape:Class; 

public function Main(){ 
    paintShape = Star; // Make a star brush 
    addEventListener(MouseEvent.MOUSE_UP, paintObject); 
    //... 
} 

private function paintObject(ev:MouseEvent){ 
    var newShape = new paintShape() as Sprite; 
    newShape.x = mouseX; 
    newShape.y = mouseY; 
    addChild(newShape); 
} 

see livedocs for an overview of Events

Questions connexes