質問: this["y"+i]; } } else { trace("テキストファイルのロード失敗"); } }; mylv.load("mcdata.txt"); ↓あらかじめ作成したムービークリップの詳細↓ インスタンス名「t_box」というムービークリップの中に「text_a」「text_b」というダイナミックテキストが入っております。 ↓外部テキストファイル↓ mcnum=10& &name1=1&x1=20&y1=20&text_a1=サンプル店名(1)&text_b1=店の説明(1)& &name2=2&x2=40&y2=40&text_a2=サンプル店名(2)&text_b2=店の説明(2)& &name3=3&x3=60&y3=60&text_a3=サンプル店名(3)&text_b3=店の説明(3)& &name4=4&x4=80&y4=80&text_a4=サンプル店名(4)&text_b4=店の説明(4)& &name5=5&x5=100&y5=100&text_a5=サンプル店名(5)&text_b5=店の説明(5)& &name6=6&x6=120&y6=120&text_a6=サンプル店名(6)&text_b6=店の説明(6)& &name7=7&x7=140&y7=140&text_a7=サンプル店名(7)&text_b7=店の説明(7)& &name8=8&x8=160&y8=160&text_a8=サンプル店名(8)&text_b8=店の説明(8)& &name9=9&x9=180&y9=180&text_a9=サンプル店名(9)&text_b9=店の説明(9)& &name10=10&x10=200&y10=200&text_a10=サンプル店名(10)&text_b10=店の説明(10) どうかよろしく御願い致します。
回答: なるほど。 スクリプトを見てしたいことの大筋がわかりました。 方法は大きく分けて2つあると思います。 1つめはmoviecliploaderクラスを使う方法で, こちらの方が質問内容に近い形のスクリプトになります。 ただし,flash mx 2004 以上が必要です。 flash のバージョンを書かれていらしゃらないためこれが使えるかどうかはわかりません。 2つめはmoviecliploaderクラスを使わずに, ムービークリップを親子の入れ子で作成して, 子ムービークリップにjpegをロードする方法です。 こちらの方がスクリプトがシンプルな上,loadvarsが使えるようになった flash mx でも使用可能です。 ただし,jpegのロード失敗は得られません。 一応2つともスクリプトを書いておきます。 両方ともコピペするだけで使えると思います。 ◎moviecliploaderクラスを使う方法 要:flashmx2004以上,flashplayer7以上にパブリッシュ ------------------------------------------- function makemc(n) { // 指定座標の場所にムービークリップを作成 for (i=1; i<=n; i++) { _root.createemptymovieclip("mc"+mylv["name"+i], i); _root["mc"+mylv["name"+i]]._x = mylv["x"+i]; _root["mc"+mylv["name"+i]]._y = mylv["y"+i]; } // // 変数 i の初期値を設定(本当は i ではないほうが良い) i = 1; // // moviecliploaderクラスのインスタンス mymcl を作成 mymcl = new moviecliploader(); // ロード監視オブジェクト mmld を作成 mmld = new object(); // // ロード完了時の動作定義 mmld.onloadinit = function(target) { // // ロードされたムービークリップ内の変数 num に i を代入 target.num = i; // // ロードされたムービークリッププレス時の動作を定義 target.onpress = function() { // このムービークリップ内の num 番 のテキストを表示 _root.t_box.text_a.text = mylv["text_a"+this.num]; _root.t_box.text_b.text = mylv["text_b"+this.num]; }; // // ロードされたムービークリップを放したときの動作を定義 target.onrelease = target.onreleaseoutside=function () { _root.t_box.text_a.text = ""; _root.t_box.text_b.text = ""; }; // // 変数 i に1を加算 i++; // n 以下であれば次の jpeg をロード if (i<=n) { mymcl.loadclip("images/"+i+".jpg", "mc"+mylv["name"+i]); } }; // // ロード失敗時の動作を定義 mmld.onloaderror = function(target) { trace(target+" にイメージファイルのロード失敗"); // 変数 i に1を加算 i++; // n 以下であれば次の jpeg をロード if (i<=n) { mymcl.loadclip("images/"+i+".jpg", "mc"+mylv["name"+i]); } }; // // mymcl のリスナーとして mmld を登録 mymcl.addlistener(mmld); // 最初の jpeg をロード mymcl.loadclip("images/"+i+".jpg", "mc"+mylv["name"+i]); } mylv = new loadvars(); mylv.onload = function(textok) { if (textok) { makemc(this.mcnum); } else { trace("テキストファイルのロード失敗"); } }; mylv.load("mcdata.txt"); ------------------------------------------- ◎親子の入れ子ムービークリップを作成する方法 要:flashmx以上,flashplayer6以上にパブリッシュ ------------------------------------------- function makemc(n) { for (i=1; i<=n; i++) { // _root に空の親ムービークリップを作成 _root.createemptymovieclip("mc"+mylv["name"+i], i); // その中にさらにロード用子ムービークリップ _mc を作る _root["mc"+mylv["name"+i]].createemptymovieclip("_mc", 0); // 親ムービークリップ の座標指定 _root["mc"+mylv["name"+i]]._x = mylv["x"+i]; _root["mc"+mylv["name"+i]]._y = mylv["y"+i]; // 親ムービークリップ内の変数 num に i を代入 _root["mc"+mylv["name"+i]].num = i; // // 親ムービークリッププレス時の動作を定義 _root["mc"+mylv["name"+i]].onpress = function() { // このムービークリップ内の num 番 のテキストを表示 _root.t_box.text_a.text = mylv["text_a"+this.num]; _root.t_box.text_b.text = mylv["text_b"+this.num]; }; // // 親ムービークリップを放したときの動作を定義 _root["mc"+mylv["name"+i]].onrelease = _root["mc"+mylv["name"+i]].onreleaseoutside=function () { _root.t_box.text_a.text = ""; _root.t_box.text_b.text = ""; }; // // 子ムービークリップにjpegをロード _root["mc"+mylv["name"+i]]._mc.loadmovie("images/"+i+".jpg"); } } mylv = new loadvars(); mylv.onload = function(textok) { if (textok) { makemc(this.mcnum); } else { trace("テキストファイルのロード失敗"); } }; mylv.load("mcdata.txt"); ------------------------------------------- jpegのロード失敗が得られないのが難点かもしれませんが, 私の個人的な好みは2つ目です。