2013-06-28 2 views
0

Je suis en train d'apprendre as3, et de construire quelques exercices à partir des tutoriels en ligne adobe. J'essaie de faire une tâche très simple et je pense que mon code est exactement le même que celui du tutoriel et que ça ne marche pas! Je ne peux simplement pas le résoudre ...Définir un champ de texte dans une classe mais en affichant un nombre?

J'essaye de changer le champ de texte dans un bouton de cette classe de boutons.

Le bouton est appelé GameButton, le champ de texte s'appelle blabel et est un texte classique et un texte dynamique. Voici le code de la classe GameButton. Au lieu d'afficher "Click" comme ci-dessous, il suffit de changer l'étiquette pour le numéro 1. L'instruction trace fonctionne, etc, il va là, mais le texte ne passe pas à travers ou quelque chose. S'il vous plaît aider !!!

package

{

import flash.display.MovieClip; 


public class GameButton extends MovieClip { 


    public function GameButton() { 
     trace("Gamebutton has been created"); 
     this.blabel.text = "Click"; 
     stop(); 

    } 

} 

}

+0

enfants instances placées sur la scène dans Flash Professional ne peut pas être accédé par le code à partir du constructeur d'une instance parent, car ils n'ont pas été créés à ce stade dans l'exécution du code. Avant d'accéder à l'enfant, le parent doit à la place créer l'instance enfant par code ou retarder l'accès à une fonction de rappel qui écoute l'enfant pour envoyer son événement Event.ADDED_TO_STAGE. http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html – shaunhusain

Répondre

0

La longue et courte est que vous pouvez créer le bouton dans le code, ou bien vous pouvez écouter les ajouter à des événements en scène provenant de l'objet parent vous ajoutons les enfants à (peut-être l'étape, peut-être un autre DisplayObjectContainer). Le problème avec la méthode d'écoute est que je ne suis pas sûr de savoir comment vous sauriez quel enfant vient d'envoyer l'événement sans faire de code désordonné. Je pense que la première option est généralement plus facile et plus logique, le seul inconvénient est que vous devez placer les instances en utilisant les coordonnées x/y ou appliquer scaleX, scaleY pour étirer ou rétrécir les objets au lieu de le faire en utilisant l'outil de création. Vous pouvez toujours utiliser les pièces de glisser-déposer de flash pour déterminer les coordonnées et construire des clips vidéo individuels, etc.

Assez parlé à un code:

package 
{ 
    import flash.display.MovieClip; 


    public class GameButton extends MovieClip { 

     private var blabel:TextField; //This can be any display object class or a class that extends from a display object class (Sprite, MovieClip, MyCustomButton etc.) 

     public function GameButton() { 
      blabel = new TextField(); //The type after new, should be the same, or a sub-class (extension) of the type used in the variable declaration above 
      addChild(blabel); 

      //blabel.x=10; //optional over ten pixels from left 
      //blabel.y=10; //optional down ten pixels from top 
      //blabel.scaleX=.5; //optional half the width 
      //blabel.scaleY=2; //optional 2 times taller 

      trace("Gamebutton has been created"); 
      blabel.text = "Click"; 
      stop(); 

     } 

    } 
} 
Questions connexes