ActionScriptで複数の空ムービークリップに画像を埋め込む方法

このQ&Aのポイント
  • ActionScriptを使用して複数の空ムービークリップに画像を埋め込みたいが、うまくいかない。
  • forループを使用してムービークリップを作成し、画像を読み込むが、エラーは起こらない。
  • プラス横一列に並べる方法も教えてほしい。
回答を見る
  • ベストアンサー

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); } の様に行っているのですが エラーは起こりませんがうまくいきません。 ↑プラス横一列に並べる方法もよかったら お教え願います。よろしくお願いします。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.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; この辺は,私が勝手に数値を代入してみただけのものです。

unhork
質問者

お礼

非常に非常にわかりやすい説明 で大変助かりました! 本当にありがとうございました。

関連するQ&A

  • 複数ボタンの生成 - 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
  • 空のムービークリップを作成し、画像を読み込み・・・の繰り返し

    _root.createEmptyMovieClip("test",0); test._x = 0; test._y = 50; test.loadMovie(img); _root.createEmptyMovieClip("test1",1); test1._x = 120; test1._y = 50; test1.loadMovie(img1); _root.createEmptyMovieClip("test2",2); test2._x = 240; test2._y = 50; test2.loadMovie(img2); ・ ・ ・ ・ _root.createEmptyMovieClip("test30",30); test30._x = 3600; test30._y = 50; test30.loadMovie(img30); というように1~30まで空のムービークリップを作成し、 外部画像を読み込みというのを繰り返し行いたいのですが、 for文を使用してもなぜかうまくいきません。 for(i = 0 ; i < 30; i++;){ _root.createEmptyMovieClip("test"+i,i); this["test"+i]._x = i*120; this["test"+i]._y = 50; this["test"+i].loadMovie(this["img"+1]); } と記述しましたが出来ませんでした。 trace(["test"]+i]); で表示されるのは test0 test1 . . . test30 でした。 環境はCS3,AC2.0,XPです。

    • ベストアンサー
    • Flash
  • FLASHでムービークリップ名を変数で持つ場合のloadmovie

    FLASHMXで空ムービークリップを作成して その中に外部SWFを読み込むスクリプトを書いています。 外部ファイルはa0.swfからa10.swfまであるのでそれを全て読み込む為に 空ムービークリップ名を変数で持ちたいのですが loadmvieの行では変数と認識してくれないようで何も表示されません。 (traceの行の2つの変数は正常に表示されますし  直接ムービークリップ名を入れれば読込もできます) おそらく下のソースの例だとpart_mcは変数名なのに そのままムービークリップ名と捕らえられてしまっているようです。 どのようにすれば変数と認識してくれるのでしょう? for (var i = 0; i<10; i++) { var part_mc = "a10" + i + "_mc"; var loadfile = "a" + i + ".swf"; _root.createEmptyMovieClip(part_mc, 100+i); _root.part_mc.loadMovie(loadfile); _root.part_mc._x = i * 10; trace(loadfile); trace(part_mc); } アドバイスをお願いします。

  • 外部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; としてみたんですが、表示されませんでした。

  • ムービークリップのボタン化

    menu01_mcというムービークリップをボタンにしたいのですが、 ボタン自体に on (release) { _root.photo_mc.loadMovie("1.jpg"); } と書くと正常に動くのですが、 タイムライン上に menu01_mc.onRelease = function(){ _root.photo_mc.loadMovie("1.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
  • ムービークリップをスクロール操作させる方法は?

    createEmptyMovieClip()で作成した空のムービークリップ_mcがあり, このムービークリップ_mcの配下に,createTextField()で作成したテキストエリアやcreateEmptyMovieClip()で作成したボタン等を配置しています. このムービークリップ_mcを,ScrollPaneコンポーネントを適用して,又は別の方法で,スクロール操作できるようにしたいのですが方法が分かりません. ご教授お願います. Flash8:ActionScript2.0

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

    ムービークリップにloadMovieで1.jpgをロードし、それをボタンにしたいのですが、下のスクリプトではうまく動作しません。 menu01_mc.loadMovie("1.jpg"); menu01_mc._xscale=10; menu01_mc._yscale=10; menu01_mc.onRelease = function(){ gotoAndStop(5); } 最初のloadMovieの部分をなくし、 menu01_mc.onRelease = function(){ gotoAndStop(5); } とするとちゃんと動作します。 loadMovieしたムービークリップはボタンにできないのでしょうか? FlashCS3、actionscript2.0で作成しています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 【ActionScript】createEmptyMovieClipの寸法を変えたい

    FLASH8(Win-XP)使用者です。 createEmptyMovieClipで生成したMCに外部画像を読み込む場合、その画像の寸法を変える場合どうしたらいいでしょうか? (attachMovie以外でお願いいたします。) _root.obj.createEmptyMovieClip("mc", 0); _root.obj.mc.loadMovie("aaa.swf"); _root.obj.mc._width = 100; ですと読み込んだ画像は消えてしまいます。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash