- ベストアンサー
ActionScript3.0のfor文でテキストを消す方法
- ActionScript3.0のfor文を使用して、画面に表示されている複数のテキストを一度に消す方法について教えてください。
- 現在、for文を使用して9つのテキストを作成し、ステージをクリックしたらテキストを消す処理を行っていますが、最後のひとつしか消えません。
- すべてのテキストを消すためにはどのような処理が必要でしょうか?ご教示いただけますと幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうかね↓。 ----------------------------- var b:int = 0; for (b; b<10; b++) { this["introA"+b] = new TextField(); this["introB"+b] = new TextField(); addChild(this["introA"+b]); addChild(this["introB"+b] ); this["introA" + b].htmlText = "aaa" + b; this["introB" + b].text = "bbb" + b; this["introA" + b].x = 30; this["introB" + b].x = 130; this["introA" + b].y = 30 * b; this["introB" + b].y = 30 * b; } stage.addEventListener(MouseEvent.CLICK, cont); function cont(ev:MouseEvent):void { for (b = 0; b<10; b++) { this["introA" + b].htmlText = ""; this["introB" + b].text = ""; } } ----------------------------- Google検索「配列アクセス演算子」 http://www.google.co.jp/search?hl=ja&source=hp&q=%E9%85%8D%E5%88%97%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%BC%94%E7%AE%97%E5%AD%90&aq=f
その他の回答 (1)
- H240S18B73
- ベストアンサー率65% (190/288)
どのやり方でやろうとして失敗してる ってものもない状態なので選択肢から 1 各テキストフィールドを生成する反復処理の際に リスナー関数を動的に生成しながらそれぞれリスナー登録 var b:int = 0; for (b; b<10; ++b) { ……. stage.addEventListener(MouseEvent.CLICK, makeContFunc(introA,introB)); } function makeContFunc(introA:TextField,introB:TextField):Function{ return function(ev:MouseEvent){ introA.htmlText = ""; introB.text = ""; } } 似てるけどそれぞれ違うリスナーを作る時とかにやる事です このケースは多分これが最適ではないです 2 各テキストフィールドを配列に格納しておき リスナー関数でその配列を反復処理して全部テキストを削除 var introAArr:Array=new Array() var introBArr:Array=new Array() var b:int = 0; for (b; b<10; ++b) { var introA:TextField = new TextField(); var introB:TextField = new TextField(); introAArr.push(introA) introBArr.push(introB) introA.name = "introA" + b; introB.name = "introB" + b; ….. } stage.addEventListener(MouseEvent.CLICK, cont); function cont(ev:MouseEvent):void { for each(var introA in introAArr){ txtFld.htmlText = ""; } for each(var introB in introBArr){ txtFld.text = ""; } } 同じことをする場合が多いものは配列に入れておくと 反復処理が書きやすくて便利です 多分これがこのケースでは最適 3 せっかく連番で名前つけてるんだから 名前で各テキストフィールドを呼び出して削除 var b:int = 0; for (b; b<10; ++b) { ….. } stage.addEventListener(MouseEvent.CLICK, cont); function cont(ev:MouseEvent):void { for(var i=0;i<10;i++){ getChildByName("introA"+i).htmlText = ""; getChildByName("introB"+i).text = ""; } } これもこのケースでは最適な選択肢な気もしますが インスタンスをムービークリップの子として取得する場合は なんか処理が1つ遅れるカンジになるし 表示されてない状態だとnullになってエラーになるし 僕はあんまりこのやり方したくありません
お礼
詳しい説明ありがとうございます! 参考にさせてもらって、いろんなことを試してみたいと思います。 また、いろいろと教えてください。 よろしくお願いします!
お礼
いつも迅速な回答ありがとうございます。 検索先のページもかなり参考になりました。 これからもよろしくお願いします。