var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc)var img_mc_on:MovieClip = new MovieClip();
var img_mc_off:MovieClip = new MovieClip();target_mc.addChild(img_mc_on);
target_mc.addChild(img_mc_off);
trace(“target_mc.img_mc_off”,target_mc.img_mc_off,target_mc.img_mc_off.name)
TypeError: Error #1010: 条件は未定義であり、プロパティがありません。
var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc)var img_mc_on:MovieClip = new MovieClip();
var img_mc_off:MovieClip = new MovieClip();img_mc_on.name = “img_mc_on”;
img_mc_off.name = “img_mc_off”;target_mc.addChild(img_mc_on);
target_mc.addChild(img_mc_off);trace(“target_mc.img_mc_off”,target_mc.img_mc_off,target_mc.img_mc_off.name)
var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc)var img_mc_on:MovieClip = new MovieClip();
var img_mc_off:MovieClip = new MovieClip();img_mc_on.name = “img_mc_on”;
img_mc_off.name = “img_mc_off”;target_mc.addChild(img_mc_on);
target_mc.addChild(img_mc_off);//これが重要!!!
//動的に生成したインスタンスは、インスタンス名で参照できないので
//addChildしたオブジェクトのプロパティにインスタンス本体を入れておく。
target_mc[“img_mc_on”] = img_mc_on;
target_mc[“img_mc_off”] = img_mc_off;trace(“target_mc.img_mc_off”,target_mc.img_mc_off,target_mc.img_mc_off.name)
target_mc.img_mc_off [object MovieClip] img_mc_off
target_mc.img_mc_off [object MovieClip] instance3
> でも最初に作ったtarget_mcが問題なく参照されているのは何でだろう?
_____
タイムラインにvar宣言された変数だからです(インスタンス名ではありません)。img_mc_onやimg_mc_offも同じです。けれども、target_mc上に宣言されてはいませんから、target_mcを参照してアクセスすればエラーになります。
>野中さん
コメントありがとうございます。
直接・・・
target_mc.img_mc_on = new MovieClip();
とすれば、問題ないということですね。ステージ上に作ってから、target_mcにaddChildしているのが問題であると。
MovieClipインスタンスの生成ではなく、あくまで変数のあるなしが問題です。img_mc_onを当該タイムラインではなく、target_mcの変数として設定することが必要です。
var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc);
var img_mc_on:MovieClip = new MovieClip();
target_mc.addChild(img_mc_on);
target_mc.img_mc_on = img_mc_on; // 変数を追加
trace(“target_mc.img_mc_on”,target_mc.img_mc_on,target_mc.img_mc_on.name);
つまり…
target_mc.img_mc_on = img_mc_on; // 変数を追加
は、生成後に変数に追加していて
target_mc.img_mc_on = new MovieClip();
は、インスタンスの生成と変数への追加を一度にやっているということですね。
どちらも変数に追加しているので、参照可能であると。
そうですね。
ちなみに、最初の例はタイムラインとMovieClipインスタンス(target_mc)の双方に同盟の変数(img_mc_on)が存在し、同じインスタンスを参照していることになります。
>野中さん
やっと理解できました。ありがとうございます〜。