- ベストアンサー
外部ファイルの画像読み込みについて
- WinXPとFlash8の環境で、同じボタンをいくつも配置し、AS(ActionScript)でボタンを配置したいと考えています。
- ボタン1~10をステージ上に配置し、画像(pcs1.jpg~pcs10.jpg)をそれぞれに読み込み、画像がない場合はボタンも表示させないようにしたいです。
- また、それぞれのボタンを押すとphoto_mcに画像(photo1.jpg~photo10.jpg)が読み込まれるようになっていますが、現状ではボタンのアクションが全て同じになってしまっています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
for文はそのフレーム(フレーム1)が表示されたときに実行されますよね。 つまり, 変数 i は フレーム1 が表示されたときに 1→2→3→4→5→6→7→8→9 となり さらに i++ が実行されて i は 10 になるけど i<10 の条件を満たさないので for文 内は実行されず 変数 i の値は 10 で放置されます。 そして,そのずーーーーーーーーーっと後に, エンドユーザの気が向いてボタンがクリックされます。 そのときに変数 i は 10 のまま放置されているので, どのボタン(MC)をクリックしても var photo = "photo"+10+".jpg"; photo_mc.loadMovie(photo); が実行されます。 そうならないようにするためには, そのときの i を別の場所に格納しておく必要がありますが, 簡単なのは作ったMC内に格納しておくことです。 for (var i = 1; i<10; i++) { _root.createEmptyMovieClip("mc"+i, i); // ★↓MC内にそのときの i を格納 _root["mc"+i].n = 1; var load_mc = _root["mc"+i]; load_mc.createEmptyMovieClip("my_mc", 0); var jpg_pcs = "pcs"+i+".jpg"; load_mc.my_mc.loadMovie(jpg_pcs); i = i-1; load_mc._x = i*20; i = i+1; load_mc.onPress = function() { // ★↓格納した値を参照 var photo = "photo"+this.n+".jpg"; photo_mc.loadMovie(photo); }; } =================== >> ボタンを生成したかったのですがわからなくて・・・ ActionScript ではボタンは生成できません。 ムービークリップを生成するので正解です。 ただ, createEmptyMovieClip で MC を生成するのではなく, attachMovie でライブラリの中のMCを呼び出して来て その中にボタンを入れておくことならできます。 しかしーーーー! それをした場合,今度は画像がロードできなくなりますよ。 loadMovie は MovieClipクラスのメソッドです。 Buttonクラスのメソッドではないのでボタンには外部画像をロードできません。 また, ボタンの中にMCを作成してそのMCに外部画像をロードするのも不可能です。 したがってやはり, ムービークリップを生成するので正解です。