外部ファイルの画像読み込みについて

このQ&Aのポイント
  • WinXPとFlash8の環境で、同じボタンをいくつも配置し、AS(ActionScript)でボタンを配置したいと考えています。
  • ボタン1~10をステージ上に配置し、画像(pcs1.jpg~pcs10.jpg)をそれぞれに読み込み、画像がない場合はボタンも表示させないようにしたいです。
  • また、それぞれのボタンを押すとphoto_mcに画像(photo1.jpg~photo10.jpg)が読み込まれるようになっていますが、現状ではボタンのアクションが全て同じになってしまっています。
回答を見る
  • ベストアンサー

外部ファイルの画像読み込みについて

環境 WinXP Flash8 同じボタンをいくつも配置したいのと、汎用性を持たしたいのでボタンを ASで配置したいと思いますが、ASをほとんど扱ったことがないのでわかりません。 ■やりたいこと ・ボタン1~10をステージ上に配置 ・画像(pcs1.jpg~pcs10.jpg)をそれぞれに読み込みたい。 ・画像がない場合はボタンも表示させない ・それぞれのボタンを押すとphoto_mcに画像(photo1.jpg~photo10.jpg)が読み込まれる ■現状 WEBで見つけたソースを色々といじってみた。画像は配置できたのですが ボタンのアクションが全て同じ(10番目)になってしまいます。 画像がないときの処理もわかりません。 AS:フレーム1 for (var i = 1; i<10; i++) {  _root.createEmptyMovieClip("mc"+i, i);  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"+i+".jpg"; photo_mc.loadMovie(photo); }; } これってボタンじゃなくてmcを配置してclickイベントになってますよね? ボタンを生成したかったのですがわからなくて・・・ 根本的なことが分かっていなくてソースをいじってますがアドバイスお願い致します。 今のソースは全く無視していただいて結構です。

  • Flash
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.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に外部画像をロードするのも不可能です。 したがってやはり, ムービークリップを生成するので正解です。

関連するQ&A

  • ActionScript - 複数の空ムービークリップ

    複数の空ムービークリップを作成してその中に 画像を埋め込みたいのですがうまくいきません。 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); } の様に行っているのですが エラーは起こりませんがうまくいきません。 ↑プラス横一列に並べる方法もよかったら お教え願います。よろしくお願いします。

  • for文での外部画像ファイルの読み込み

    ステージ上に配置している複数のMCに それぞれ外部画像を読み込もうとしています。 読み込むMCはtb1,tb2,tb3、、というインスタンス名に していますので、それぞれ tb1.loadMovie("1.jpg"); tb2.loadMovie("2.jpg"); tb3.loadMovie("3.jpg"); . . なら表示されるのですが、 MCが20個あるなら for(i=1;i<=20;i++){ var TB:String = "tb" + i; TB.loadMovie(i+".jpg"); } というように簡単な文で書きたいのですが、 上記のfor文ですとうまくいきません。 for文以外でもよい方法があれば、 よろしければ教えていただけますか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 複数ボタンの生成 - actionscript

    以前複数のムービークリップを作る方法を 教えていただいたのですが、そのムービークリップ をボタンにしたいのですがうまく行きません。 for (var i = 1; i<5; i++) {   _root.createEmptyMovieClip("mc"+i, i);   var load_mc = _root["mc"+i];   _root.test = load_mc;   var jpg = i+".jpg";   load_mc.loadMovie(jpg);   i = i-1;   load_mc._x = i*200;   i = i+1; } onEnterFrame = function () {   for(var t=1;t<5;t++){ var load_mct = _root["mc"+t]; load_mct.onPress = function(){ trace(t);   }  if(_xmouse>540 && _root.mc1._x<=-1) {   for (var j = 1; j<5; j++) { var load_mcj = _root["mc"+j]; load_mcj._x += 10;   }  }  if(_xmouse<10 && _root.mc1._x>=-1*((test*200)-560)) {   for (var j = 1; j<5; j++) { var load_mcj = _root["mc"+j]; load_mcj._x -= 10;   }  } } 多分EnterFrameの中に記述するのがおかしい と思うのですが、いったいどこに記述しないと いけないのがわからないので、どなたか ご教授ください。

    • ベストアンサー
    • Flash
  • createEmptyMovieClipdeで作成したmcをASで動かす

    createEmptyMovieClipで空のムービークリップを作成し、 そのMCに画像を読み込ませた後、右に徐々に移動させたい場合、 どのようなスクリプトを書いたらよいのでしょうか。 for(i=0; i < 10; i++){ createEmptyMovieClip(["load_mc"+i],i); _root["load_mc"+i]._x = i*120; _root["load_mc"+i]._y = 20; _root["load_mc"+i].loadMovie(img); } _root["load_mc"+i]._x += 10; とすると、単純にx座標が10の所にMCが配置されるだけで、 モーショントゥイーンのように動いてくれません。。。。

    • ベストアンサー
    • Flash
  • 外部swfファイルの読み込みで、ムービークリップを作成して、その任意の

    外部swfファイルの読み込みで、ムービークリップを作成して、その任意の位置にswfファイルを表示させる方法を教えてほしいです。 http://okwave.jp/qa/q1729863.html このサイトを参考にして、 _root.createEmptyMovieClip("load_mc", 1); load_mc.loadMovie("http://***/***.swf"); load_mc._x =0; load_mc._y =100; としてみたんですが、表示されませんでした。

  • マウス位置によって画像を切り替える

    ステージ上のマウス位置を読み取り、その座標によって画像を切り替えるFlashを作成中なのですが、上手くいきません。 流れとしては 画像のファイルを読み込む ↓ 画像のファイル分だけムービークリップを作成 ↓ マウスの座標に応じて画像(ムービークリップを切り替える) というものです。 下記のようにかいています。 ●1フレーム目 //各画像の変数読み込み jpg1 = "test1.jpg"; jpg2 = "test2.jpg"; jpg3 = "test3.jpg"; jpg4 = "test4.jpg"; //初期配置 //空のMCを作成し、その中に画像変数を読み込ませる。 _root.createEmptyMovieClip("image_mc0",4); _root.createEmptyMovieClip("image_mc1",3); _root.createEmptyMovieClip("image_mc2",2); _root.createEmptyMovieClip("image_mc3",1); _root.image_mc0.loadMovie(_root.jpg1); _root.image_mc1.loadMovie(_root.jpg2); _root.image_mc2.loadMovie(_root.jpg3); _root.image_mc3.loadMovie(_root.jpg4); //マウスが押されたときに変数MCclickをオンにする _root.mouse_mc.onPress = function() { MCclick = true; trace( "押された時の変数 " +_root.MCclick); } //マウスが離れた時に変数MCclickをオフにする _root.mouse_mc.onRelease = function() { MCclick = false; trace( "離れた時の変数 " +_root.MCclick); nowpoint = (_root._xmouse); trace( "今の位置" + nowpoint); } //マウスがボタン領域外にいった時に変数MCclickをオフにする _root.mouse_mc.dragOut = function() { MCclick = false; trace( "どっかいった時の変数 " +_root.MCclick); } stop(); ●ステージ上にかぶせている透明なMC(mouse_mc) //MCclickがオンの時変数mc_xの値をとり続ける onClipEvent (mouseMove) { if (_root.MCclick) { _root.mc_x = (_root._xmouse); trace( "押された時の変数mc_xの位置 " + _root.mc_x); trace( "マウスを押したままの変数 " + _root.MCclick); //100以下の時に画像1を表示 if((_root.mc_x >= 0) || (_root.mc_x <= 100)){ _root.image_mc0._visible = true; _root.image_mc1._visible = false; _root.image_mc2._visible = false; } else if((_root.mc_x >= 100) || (_root.mc_x <= 200)){ _root.image_mc0._visible = false; _root.image_mc1._visible = true; _root.image_mc2._visible = false; } else if((_root.mc_x >= 200) || (_root.mc_x <= 300)){ _root.image_mc0._visible = false; _root.image_mc1._visible = false; _root.image_mc2._visible = true; } } } この書き方で一応動作はするのですが、1枚目と2枚目の画像の切り返しか動作が行われなくて困っています。 画像のサイズ、ステージのサイズは両方とも 400*400です。

    • ベストアンサー
    • Flash
  • 外部swfファイルの閉じ方

    メインに"stage2というmcを配置し、123.swfを読み込むボタンを配置しました。 ボタンスクリプト: on (release) { _root.construction(); loadMovie("123.swf", "_root.stage"); _root.stage.swapDepths(5); for (i=1; i<=4; i++) { _root["m_"+i]._visible = false; } 開いた外部swfファイルを閉じる設定をしたいのですが、どのようにすればよいでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップのボタン化

    menu01_mcというムービークリップをボタンにしたいのですが、 ボタン自体に on (release) { _root.photo_mc.loadMovie("1.jpg"); } と書くと正常に動くのですが、 タイムライン上に menu01_mc.onRelease = function(){ _root.photo_mc.loadMovie("1.jpg"); } と書くと動きません。 どのようにすればいいのでしょうか? わかる方教えてください。よろしくお願いします。

  • mc作成→jpg読み込み→リンクをつけたい

    createEmptyMovieClipでMCを作成し、 そのMCに画像を読み込み、さらにリンクをつけたいのですが、 なぜかうまくいきません。 createEmptyMovieClip("mc", 1); mc.loadMovie("test.jpg"); mc.onRelease = function() { getURL("aaa.html", "_blank"); }; としても画像は読み込まれるのですが、 リンクがつきません。 いろいろとサンプルを見て作成してみたのですが、 画像を読み込ませるとリンクが消えてしまいます。

    • ベストアンサー
    • Flash
  • 外部swfのラベル移動

    FLASH MX2004で作成しています。 main.swf上のload_mcのレベル0に、外部swfのA.swfを読み込んでいます。 #main上のフレーム this.load_mc.loadMovie("A.swf", 0); A.swfが終わると同時に、main.swf上のload_mcのレベル1に、外部swfのB.swfを読み込みます。 #A.swfの最終フレーム stop(); _root.load_mc.loadMovie("B.swf", 1); ここまではできています。 その後、B.swf内のcontentsというMC内のラベルをlabel2に移動させたいのです。 #A.swfの最終フレーム stop(); _root.load_mc.loadMovie("B.swf", 1); _root.load_mc.contents.loadMovie("label2"); これができません。 _root.load_mc.contents.loadMovie("label2"); _root.contents.loadMovie("label2"); _root.load_mc.loadMovie("label2"); load_mc.contents.loadMovie("label2"); contents.loadMovie("label2"); なども試してみましたが、うまくいきません。 わたしの頭ではこれが限界です。 ぜひともお力お貸しください!

専門家に質問してみよう