- ベストアンサー
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が配置されるだけで、 モーショントゥイーンのように動いてくれません。。。。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おおむね#1の方と同意見です。 とにかく onEnterFrame です。 もっと詰めると方法は色々考えられますが, よくあるのが次の3つだと思います。 ◎_root など1つのムービークリップに対して 1フレーム進む時間毎に随時実行するイベントハンドラメソッド MovieClip.onEnterFrame = function(); を定義して右に移動させる ◎_root["load_mc"+i] 1つ1つのムービークリップに対して MovieClip.onEnterFrame = function(); を定義して右に移動させる ◎1つの親ムービークリップを作成して, そのムービークリップ内に createEmptyMovieClip で子ムービークリップを作って 親ムービークリップごと全体を MovieClip.onEnterFrame = function(); で右に移動させる ◎_root に対して 1フレーム進む時間毎に右に移動させる動作を定義する例 ------------------------------------------------------- var img = "○○.jpg"; 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 に 1フレーム時間毎に実行するイベントハンドラメソッドを定義 _root.onEnterFrame = function() { for (i=0; i<10; i++) { _root["load_mc"+i]._x += 10; } }; ------------------------------------------------------- ◎_root["load_mc"+i] に対して 1フレーム進む時間毎に右に移動させる動作を定義する例 ------------------------------------------------------- var img = "○○.jpg"; //ロード監視用のオブジェクト「myLSN 」を作成 var myLSN = new Object(); // MovieClipLoaderインスタンス「myMCL」を作成 var myMCL = new MovieClipLoader(); // JPEGロード時の動作を定義(引数:ロードしたMC) myLSN.onLoadInit = function(targetMC) { // ロードしたMCに1フレーム時間毎に実行するイベントハンドラメソッドを定義 targetMC.onEnterFrame = function() { this._x += 10; }; }; // 「myMCL」のリスナーとして「myLSN」を登録 myMCL.addListener(myLSN); 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」をターゲットとしてJPEGをロード myMCL.loadClip(img, "_root.load_mc"+i); } ------------------------------------------------------- ◎親ムービークリップ内に子ムービークリップを作って 親ムービークリップごと全体を右に移動させる例 ------------------------------------------------------- var img = "○○.jpg"; // 親ムービークリップを作成 createEmptyMovieClip("oya_mc", 0); for (i=0; i<10; i++) { // 親ムービークリップ内に 「"load_mc"+i」 を作成 _root.oya_mc.createEmptyMovieClip("load_mc"+i, i); _root.oya_mc["load_mc"+i]._x = i*120; _root.oya_mc["load_mc"+i]._y = 20; _root.oya_mc["load_mc"+i].loadMovie(img); } // oya_mc に 1フレーム時間毎に実行するイベントハンドラメソッドを定義 _root.oya_mc.onEnterFrame = function() { this._x += 10; }; ------------------------------------------------------- スクリプト難易度的には3例のうち2つ目が一番高いですね。 またこの例にある MovieClipLoader を使うには Adobe(Macromedia) だと Flash MX 2004 以上をお持ちで Flash Player 7 以上用のSWFをパブリッシュする必要があります。 3例のうち1つ目と3つ目は比較的簡単です。 Adobe(Macromedia) だと Flash MX 以上をお持ちで Flash Player 6 以上用のSWFをパブリッシュする必要があります。 3つとも ActionScript1.0 です。 つまりパブリッシュするActionScriptバージョン設定は ActionScript1.0 または ActionScript2.0 にする必要があります。
その他の回答 (1)
- 15mm
- ベストアンサー率65% (65/100)
徐々に、というのは基本的にenterFrameを使います。 for文中の最後のほうに with(_root["load_mc"+i]){onEnterFrame=function(){this._x+=10;};} と入れると、うまくいったみたいです。 画像を読み終わったころには画面外、なんて悲劇を避けるためにも MovieClipLoader.loadClip()の使用に切り替えて、 onLoadComplete,onLoadInitを使って進行状況を確認しながら (必要に応じて全てが読み終ったことを確認してから)という処理にすることもできます。
お礼
ありがとうございました^^ 無事出来ました。
お礼
ありがとうございました。 大変、詳しく書いていただきかなり助かりました^^