解決済みの質問
いつもお世話になります。
ActionScript3でサイト制作を行なっています。
初歩的な質問で大変恐縮ですが、文字の置き換え処理に関するご質問です。
「a_mc」というムービークリップがあり、関数Aの中で「a_mc」をthis.addChildします。
「b_mc」というムービークリップがあり、関数Aの中で「b_mc」をthis.addChildします。
以下「c_mc」、「d_mc」というムービークリップが続きます。
上記のムービークリップで不要になったものをremoveChildする時に、共通の関数で処理したいと考え、
this.removeChild(*_mc);という感じに*をa~dの文字列に置き換えて処理できるようにしたいと思い、
下記の処理を作成しましたが、「ReferenceError: Error #1065: 変数 b_mc は定義されていません。」
というエラーが表示されてしまいます。
上記の処理を実現するにはどのような処理方法が適切でしょうか?
是非ご教授ください。
宜しくお願い申し上げます。
// コンテンツMC
var a_mc:MovieClip = new a_mcs();
var b_mc:MovieClip = new b_mcs();
var c_mc:MovieClip = new c_mcs();
var d_mc:MovieClip = new d_mcs();
this.addChild(a_mc);
this.addChild(b_mc);
this.addChild(c_mc);
this.addChild(d_mc);
// コンテンツ消去処理
// 例)ムービークリップb_mcをremoveChildする場合
removeFunc("b");
function removeFunc(str:String):void {
var tempStr:String = str + "_mc";
var categoryNameClass:Class = Class(getDefinitionByName(tempStr));
var categoryContents:MovieClip = new categoryNameClass;
this.removeChild(categoryContents);
}
投稿日時 - 2010-03-31 19:32:56
単純に
function removeFunc(str:String):void {
this.removeChild(this[str+"_mc"]);
}
で良いと思います。
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
投稿日時 - 2010-03-31 20:15:50
お礼
BlurFiltan様
早速のご回答ありがとう御座います。
仰る通りアクセス演算子でできますよね・・・。
何故あんな回りくどいやり方していたのでしょう・・・。
ポイント付与させていただきます。
ありがとう御座いました。
投稿日時 - 2010-04-01 10:11:29
0人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク