プロが教えるわが家の防犯対策術!

複数の空ムービークリップを作成してその中に
画像を埋め込みたいのですがうまくいきません。

for(var i=1;i<10;i++){
 //空ムービークリップ作成
_root.createEmptyMovieClip("mc"+i,0);
var load_mc = "_root.mc" + i;
var jpg = i + ".jpg";
 //画像の読み込み
load_mc.loadMovie(jpg);
}
の様に行っているのですが
エラーは起こりませんがうまくいきません。

↑プラス横一列に並べる方法もよかったら
お教え願います。よろしくお願いします。

A 回答 (1件)

まず,深度の重複がいけません。


同じ深度(書かれているスクリプトの場合深度0)に,
次々に違うムービークリップを作成すると,
その深度に新しいムービークリップが上書きされてしまって,
その前に存在していた深度0のムービークリップは削除されてしまいます。


次に,
var load_mc = "_root.mc" + i;
ですが,
これだと 変数 load_mc に "_root.mc" という文字列と,i という文字が代入されるだけで,
結局,

 load_mc = "_root.mc1"
 load_mc = "_root.mc2"
 load_mc = "_root.mc3"
  …       …

という "文字列" が,順次 変数 load_mc に代入されてしまうだけです。

 load_mc = _root.mc1 というパス&インスタンス名

にアクセスしなければ,
単なる文字列扱いになってしまいます。

単なる文字列として扱うのではなく,
実際の インスタンス というオブジェクトの意味を持たせるのでしたら,
配列アクセス演算子(= [ ]) や eval 関数 を使用する必要が出てきます。
eval関数の方は古く制約が多いので,
もっぱら 配列アクセス演算子が使われることの方が多いです。


そして,座標ですが,
これは,新しく作ったムービークリップインスタンスのインスタンス名に向けて,
好きな座標を割り当てれば良いのです。


以上のようなことから,
スクリプト例は次のようになります。

--------------------------------------
for (var i = 1; i<10; i++) {
//空ムービークリップ作成
_root.createEmptyMovieClip("mc"+i, i);
var load_mc = _root["mc"+i];
var jpg = i+".jpg";
//画像の読み込み
load_mc.loadMovie(jpg);
// 座標指定
load_mc._x = 20+i*40;
load_mc._y = 100;
}
--------------------------------------

見ればわかると思いますが,

load_mc._x = 20+i*40;
load_mc._y = 100;

この辺は,私が勝手に数値を代入してみただけのものです。
    • good
    • 0
この回答へのお礼

非常に非常にわかりやすい説明
で大変助かりました!

本当にありがとうございました。

お礼日時:2007/04/05 13:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!