2009-10-07 10 views
0

J'ajoute un tableau de sprites, chacun avec un champ de texte associé. Lorsque vous cliquez sur l'image-objet (ou sur le champ de texte, l'un ou l'autre, bien que je souhaite que le curseur soit une main), tout ce que je veux faire est de saisir le texte. (par exemple "One" dans l'exemple ci-dessous).Accéder au texte dans Textfield on Sprite

Il devrait être possible de le faire avec la notation par points, en utilisant le nom de l'image-objet, mais cela ne fonctionne pas. Autrement dit, Sprite_1.textField_1.text ne fonctionne pas.

Lorsque je clique sur l'image-objet, je peux ajouter un écouteur d'événements, mais la cible est alors l'image-objet et l'objet-image ne contient pas l'objet textfield.

Extrêmement frustrant et devrait être simple ... quelqu'un sait comment faire cela?

for (var i : int = 0;i < 5; i++) 
{ 
var myText:TextField = new TextField(); 
myText.text = someText; 
    //say "One" first time through, then "Two" second time thru, etc. 
myText.name = "textField_" + i; 
mySprite.addEventListener(MouseEvent.CLICK, grabText); 

var mySprite:Sprite = new Sprite(); 
mySprite.graphics.lineStyle(2,0x000000); 
mySprite.graphics.beginFill(0xff0000, 1); 
mySprite.graphics.drawRect(0, 0, myText.width, myText.height); 
mySprite.graphics.endFill(); 
mySprite.useHandCursor = true; 
mySprite.mouseChildren = false; 
mySprite.buttonMode = true; 
mySprite.name = "Sprite_" + i; 
mySprite.addEventListener(MouseEvent.CLICK, grabText); 

Merci!

Répondre

0

Vous n'avez pas donné le code complet et il n'est pas clair si vous ajoutez un champ de texte d'ajout à mySprite ou mySprite à this. En supposant que vous le faites, vous pouvez utiliser la méthode getChildByName pour y accéder (je préfère les stocker dans les tableaux et l'accès à partir de là - mais cela pourrait prendre beaucoup de refonte). Soyez averti que getChildByName renvoie le premier enfant avec name correspondant et échoue donc dans les cas où il y a plusieurs enfants avec le même nom.

var sprite:Sprite = Sprite(this.getChildByName("Sprite_1")); 
var tf:TextField = TextField(sprite.getChildByName("textField_1")); 
tf.text = "some other text";