0

それぞれに関連するテキストフィールドを持つスプライトの配列を追加しています。

スプライトがクリックされたとき(またはテキストフィールド-カーソルを手にしたいのですが、どちらか一方)、私がしたいのはテキストをつかむことだけです。(たとえば、以下の例の「One」)。

スプライトの名前を使用してドット表記でそれを行うことは可能であるはずですが、それは機能しません。つまり、Sprite_1.textField_1.textは機能しません。

スプライトをクリックすると、イベントリスナーを追加できますが、ターゲットはスプライトであり、スプライトオブジェクトにはテキストフィールドオブジェクトが含まれていません。

非常に苛立たしく、単純であるべきです...誰かがこれを行う方法を知っていますか?

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);

ありがとう!

4

1 に答える 1

0

完全なコードを指定しておらず、addChildingテキストフィールドをにmySpriteまたはmySpriteに追加するかどうかが明確ではありませんthis。あなたがそれをしていると仮定すると、あなたはgetChildByNameそれらにアクセスするためにメソッドを使うことができます(私はむしろそれらを配列に保存してそこからアクセスしたいです-しかしそれは多くの再設計を必要とするかもしれません)。getChildByName一致する最初の子を返すためname、同じ名前の子が複数ある場合は失敗することに注意してください。

var sprite:Sprite = Sprite(this.getChildByName("Sprite_1"));
var tf:TextField = TextField(sprite.getChildByName("textField_1"));
tf.text = "some other text";
于 2009-10-28T13:51:26.767 に答える