0 votes

Avoir des difficultés à mettre à jour les propriétés des objets dans un programme ActionScript de base

Je suis toujours en train de travailler sur un programmation Actionscript assez basique (dans Flex), et je suis un peu bloqué avec les événements et les propriétés des objets.

J'ai 3 fichiers ci-dessous, une application et deux composants. Le but de base est très simple - commencer avec deux canevas de position et un canevas de joueur. Lorsque vous cliquez dans un canevas de position, le joueur met à jour ses coordonnées x et y sur ce canevas. En cliquant dans l'autre canevas, les coordonnées x et y du joueur seront mises à jour sur ce canevas. Répétez.

Je pense que je suis proche, mais je n'arrive pas tout à fait à comprendre comment obtenir un clic dans location1 ou location2 pour envoyer leurs coordonnées x et y respectives aux valeurs playerX et playerY. Toute suggestion concernant ce problème spécifique, ou même des suggestions plus larges pour réaliser ceci plus facilement, serait géniale.

Voici mon fichier d'application principal:

Voici mon composant "location":

        [Event(name="playerMove")]

Et voici mon composant joueur:

MISE À JOUR:

J'ai réussi à simuler l'effet désiré avec le code suivant:

Maintenant, je travaille à le modulariser pour atteindre mon objectif final réel, qui est de m'assurer de bien comprendre comment fonctionnent les événements, les objets et les objets d'événements.

0voto

Eric Belair Points 3738

Vous ne faites pas remonter l'événement, donc le document parent (l'application) ne le "perçoit" pas.

Essayez de changer ceci :

var moveClick:Event = new Event("playerMove");

par ceci :

var moveClick:Event = new Event("playerMove", true);

L'ajout de true définit la propriété bubbles de l'événement comme vrai.

0voto

TheBrain Points 2474

Vous devriez définir une classe d'événement personnalisée appelée PlayerMove avec les propriétés x et y. et comme Eric l'a dit, définissez les propriétés bubbles sur true.

public class PlayerMove extends Event {

      public static const PLAYER_MOVE : String = "playerMove";
      public var x : int;
      public var y : int;

      public function PlayerMove(x:int, y:int; type:String, bubbles:Boolean=true, cancelable:Boolean=false) {
             super(type, bubbles, cancelable);
             this.x = x;
             this.y = y;
      }
}

aussi, sur votre canevas de joueur où vous avez mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="200" height="200" click="clickHandler()" vous devez ajouter le mot-clé event à la fonction comme click="clickHandler(event)" et faire de même pour votre fonction

private function clickHandler(event : MouseEvent) : void {
   dispatchEvent(new PlayerMove(event.target.x, event.target.y, PlayerMove.PLAYER_MOVE));
}

cela devrait fonctionner

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X