• 締切済み

ムービークリップ(以下mc)を複製したときの深度の設定で困っています。

ムービークリップ(以下mc)を複製したときの深度の設定で困っています。 使用ソフト:Adobe Flash CS4 professional flashのバージョン:flashlite1.1 duplicateMovieClip(コピー元mc名,新mc名,深度(例えば10など)); と書いてmcの複製はしっかりできているのですが、深度を「レイヤー内で一番上」に設定したいのですが、どう設定していいかわからず困っています。 通常、レイヤーが3つある場合、重ね順で言うと一番上のレイヤーが最前面に、一番下のレイヤーが最背面に設定されています。 そこで、一番下のレイヤーに上記プログラムを書いて一番下のレイヤーにmcを複製したいのですが、複製したmcは一番上のレイヤーよりも最前面に配置されてしまうのです。 duplicateMovieClipを書いているレイヤー内で最上位に配置したい場合、深度にどのような設定をすればいいか教えてください。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 すみません。 > flashのバージョン:flashlite1.1 と書かれていらっしゃるのを #1の書き始めは意識していてわかっていたつもりですが, 最後の方は意識から飛んでいました。 ※とりあえず重要なのは#1で書いた内容ですから  #1から読んでください。 #1の結論で書いた attachMovie() は FlashLite 1.1 では使えません。 duplicateMovieClip() では階層(ムービークリップ)を飛び越えることはできないわけですから, 「最初から複製元のムービークリップも,ターゲットとするムービークリップ内に作成する必要がある。」 というのが FlashLite 1.1 の場合の回答になります。 つまり, 複製したいムービークリップを,何某かのムービークリップ内に作成して, そのムービークリップ内で duplicateMovieClip() する必要があります。 その方法でないと, レイヤーを選ぶことはできません。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

話は複雑ですからゆっくり読んでください。 「レイヤー」 というものは 「手動でものが作成できる(配置できる)範囲」 ですよね。 この手動でものが作成できる(配置できる)深度は,負の数なんです。 -16384 ~ -1 以下 です。 「具体的にはどの深度に配置されるんだ?」と問われると, 「誰も知らない。」という答えになります。 「レイヤーの番号」などというものとは無関係で, 下にあるもの(下にあるインスタンス)から順に 自動で -16384,-16383,-16382,… という深度が割り振られます。 --- 以上は前置きですが大変重要なことです------ > 深度(例えば10など)); その 10 は 正の数 ですよね。 正の数は手動では作成できない範囲なんです。 「レイヤー」に喩えるなら,超上の上のレイヤー で, 実際にはレイヤーでは配置できない上の上です。 0以上の深度は, ActionScript のみで,もの(ムービークリップインスタンス)を配置できる範囲なんです。 と,ここまで聞けば, 「そうか。 深度に負の数を指定すれば良いのか!」 となるかもしれませんが,それは大間違いです。 確かに ActionScript で負の数の深度にムービークリップを配置することはできます。 しかし, ActionScript では 深度10 など 0 以上の深度にものを配置すべきなのです。 何故かというと, 適当に 深度 -16380 辺りを指定したとすれば, その深度に手動で配置してあるインスタンスが,吹っ飛んで消えてしまうからです。 手動で配置したインスタンスは, 自動でその深度が割り振られますから, 誰もその深度を把握していないわけですし, モーショントゥイーンなどをかけたインスタンスであれば 「レイヤーに依存するしかない」のです。 仮に手動で配置したインスタンスの深度がわかったとしても(ActionScriptで調べればわかりますが), その下の深度に持っていくことはできないんです。 (できるが,何かが吹っ飛ぶ。 つまり管理が不可能もしくはものすごく難しくなる。) したがって, ActionScript でムービークリップを配置する深度は 0 以上で, 手動でインスタンスを配置する深度は 負の数 というエリア分けをする必要があるのです。 (「そういうルールで行こう」というものにしないと,誰も何も言えなくなる。) ですから, > 深度(例えば10など)); の 10 は正解です。 決して 負の数 にしてはいけません。 (実際はしても良いけど無茶になるのが目に見えるので自己責任で)。 となると, 残るのは,「レイヤー(手動で作成できる深度)」にムービークリップを作成して, そのムービークリップ内にActionScriptでムービークリップを配置するしかなくなります。 つまり, 配置したいレイヤーにあらかじめムービークリップを手動で作成しておいて, そのムービークリップにインスタンス名を付けて, そのムービークリップ内に ActionScriptでムービークリップを配置するということです。 しかし! ここにもまだ障壁があって, duplicateMovieClip() でムービークリップが配置できるのは,同じ階層内なんです。 同じ階層内とは,同じムービークリップ内という意味に等しいです。 メインのタイムライン,つまり _root も,広義の ムービークリップです。 (_root は ムービークリップの親玉ムービークリップ。) したがって, duplicateMovieClip() ではなく, attachMovie() で,ライブラリからムービークリップシンボルを, 目標のムービークリップ内にインスタンスとして複製する方法をお薦めします。  ↓↓↓ 「リンケージについて」 http://www.1art.jp/flash/le/lessona/lessona.htm

関連するQ&A

  • MCの複製について

    はじめまして。 Flash Lite 1.1でカレンダーを作ってるんですが、画像を使いたくなくMCの中にダイナミックテキストを入れてそれをduplicateMovieClipで複製しています。 休日平日区別無いものなら複製・配置は出来ているのですが、休日と平日を分けるのがうまくいきません。祝日も区別したいのでなんとかこの山を越えたい。。。以下複製するループのフローチャート的なものです。 あらかじめ日付,月の最初の曜日は取得済み 白文字のMCと赤文字のMCを用意 その月の日数を条件にループ開始  平日の場合   白文字MCを複製、配置、日付設定  休日の場合   赤文字MCを複製、配置、日付設定 ループ終了 大まかにこんな流れなんですが、traceで変数出してみてみると1日~6日までの平日日付が、休日のduplicateMovieClip後に壊れてしまい、表示される日付が、休日すべてと平日7日以降のみになってしまいます。 duplicateMovieClipの複製元は表示画面外に置き、第3引数はそれぞれのMCの個数にしてます。使い方間違ってるんでしょうか…どなたかご教授願います。

  • ムービークリップを削除したい

    FLASH 5 を使っています。 現在、duplicateMovieClip を使ってムービークリップを複製できるようにしています。 複製するMCの名前に連番を付けるようにして同じものを何個も複製できるようにしています。 別途、ゴミ箱を作り複製したMCをゴミ箱に乗せると削除できるようにしたいと考えています。 hitTest と removeMovieClip を使えば良さそうなのですがうまくいきません。 複製したMCが何個も出来るためゴミ箱基準だとMCの名前を指定できないので複製元のMCに onClipEvent (enterFrame) { if (this.hitTest( _root.gomi )) { this.removeMovieClip (); } } と書いてみたのですがダメでした。 なにぶん Actionscriptを始めたばかりで、良く分かりません。 お分かりの方、教えていただけますでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • MCを最背面に表示したい+ムービーの方向・速さを変えたい

    こんばんは。 FLASHアクションスクリプトで、以下のスクリプトを利用して、 背景にものが動いているムービーを作りたいと思っております。 ↓ライブラリにあるMCをコピーする http://hakuhin.hp.infoseek.co.jp/main/as/movieclip.html#MOVIECLIP_07 こちらのスクリプトは問題なく動作したのですが、 スクリプトの内容が把握できず、困っております。 3つのご質問がございます。 (1)質問1 シーン1の上部レイヤーに違うオブジェクトを配置しており、 その下のレイヤーに上記のMCを配置しているのですが、 再生すると上記MCの方が上レイヤーのオブジェクトより前に表示されてしまいます。 このMCを最背面に表示させたいと考えております。 (2)質問2 MCの動きをもうちょっと早くしたいと思っております。 (3)質問3 上記サンプルMCでは、左から右へ移動しているのですが、 これを、下から上へ移動させたいと考えております。 スクリプトのどの部分で操作するのか教えていただける方いらっしゃいますでしょうか? 以下、作業環境です。 ----------------------------- WinXP FLASH8 ----------------------------- どうか、よろしくお願い致します。

  • duplicateMovieClipで生成したmcの深度

    こんにちは。 Mac OS X/バージョン10.6.2 ActionSpript2,0 ステージ上にmcがあって、その後ろを duplicateMovieClipで空の背景を生成して移動させて 絶えず雲が動いているフラッシュを作りたいのですが・・・ 移動は上手くいったのですが、深度が上手く行かず 背景がmcの全面に来てしまいます。 よろしければご指導の程、お願いします。 背景=haikei ********************** var speed = 10; _root.haikei.duplicateMovieClip("haikei2",-1);    ここで深度を設定しているんですよね?↑ _root.haikei2._x -= _root.haikei._width; this.onEnterFrame = function() { _root.haikei._x += speed; _root.haikei2._x += speed; if (_root.haikei._x>_root.haikei._width) { _root.haikei._x = _root.haikei2._x-_root.haikei._width; } if (_root.haikei2._x>_root.haikei2._width) { _root.haikei2._x = _root.haikei._x-_root.haikei2._width; } }; ***************** まだまだ未熟者で、duplicateMovieClip,depth等で検索などし、 試したのですが上手く行かず・・・理解できず・・・でした。 よろしくお願いします!

    • ベストアンサー
    • Flash
  • ランダム配置のムービークリップが固定配置のムービーに被ってしまいます。

    背景にランダムで星を無数に配置して瞬かせ、その上にキャラクターのムービークリップを配置しているのですが、星のレイヤーよりキャラのレイヤーを上にもってきても、星がキャラクターに被って表示されてしまいます。星の方のムービークリップに、 n=Math.round(Math.random()*1000); this.swapDepths(n); 以上の様にスクリプトで深度の設定をランダムに設定しているのですが、キャラクターの方にはどのように設定したら星が被らない様に深度の設定ができるのかわかりません。どうかよろしくお願い致します。

  • flashでムービークリップを移動したい。

    下記のようなback_mcを作成しました。 レイヤー1 _root.back_mc.onPress=function(){ _root.back_mc_x=_root.back_mc_x-50; } レイヤー2 ○の絵 これをシートの上に配置しても動作しません。 ○の絵をクリックし続けると、移動するものが作りたいのですが... なるべく別解よりは、上のコードのミスを指摘してほしいです。

    • ベストアンサー
    • Flash
  • 複製したMCを指定した座標へ配置したいのですが

    こんにちは。 初歩的な質問で申し訳ないのですがよろしくお願いします。 attachMoiveでライブラリ内のMCを数十個複製しそれらをステージ内に 配置する際、4x4、6x6といったように均等に数十個配置する事は 出来るのですが均等に配置するのではなく自分の指定した座標に 1つ1つ配置したいのです。 色々調べましたら、自分の配置したい各場所の各座標(x,y)を 配列を使い変数にするのだと思い、自分なりに作ってみましたところ 1つは指定した座標に配置出来たのですが2つ目以降が上手く 配置出来ません。 var i; var num=50; //複製するmcの数 var pos = {x:50, y:100}; //1つ目の指定座標。              //ここで残り49個のmcの座標も指定。 for (i=0; i<num; i++) { _root.attachMovie("mc", "mc"+i, i); var mc_obj = eval("_root.mc"+i); mc_obj._x = pos._x; mc_obj._y = pos._y; } 一応頭の中ではこういうスクリプトを考えてますが多分間違いが あり何かが足りないのだと思います。 var posのところで2つ目以降の座標の指定の仕方と forの中でmc_obj._xとmc_obj._yにどのように50個分指定した 座標へ配置設定をしてやるのかお分かりくださる方がいらっしゃれば ご教授くださいますようよろしくお願いします。

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

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。

  • Flashでムービークリップのランダム表示

    ActionScript初心者で過去ログを探してみたりもしたのですが、(探し方自体がヘタなのかもしれませんが(^_^;)・・・)わからなかったもので。 下記のFlashムービーで画面右半分に表示されている減速&加速して画面上を流れる球体のようなムービーを制作する場合。 http://www.kips-ps.com/main/ 例えば10数種類程度の下から上へと流れる、フレーム数の異なるモーショントゥイーンを含むムービークリップを作成して、それぞれをレイヤーに配置するーというような作業だけでできるのでしょうか? それともActionScriptからMCの表示・動作を制御したりしないと、それっぽく見えないものなのでしょうか? 質問そのものが拙い内容であるようにも思うのですが、よろしくお願いいたします。

  • 複数のムービークリップについて

    毎度すみません。 複数のムービークリップ(以下MC)をステージに時間差でバラバラの位置に登場させたいのですが、最初で行き詰まってしまいましたのでご質問させてください。 5個のMC(1~5)をステージに配置し、インスタンス名をmc1~mc5で振っています。 スクリプトレイヤーに以下の様に記述しています。 ------------ for(i=1;i<5;i++){ var mc = this["mc"+i]; mc.num = i; } mc.num._visible = false; mc.num._alpha = 0; //MCを時間差で任意の位置に表示 var t=0; this.onEnterFrame = function(){ t++; if(t==25){ mc1._visible = true; mc1.onEnterFrame = function(){ this._y = 50; } } if(t==50){ mc2._visible = true; mc2.onEnterFrame = function(){ this._y = 100; } } if(t==75){ mc3._visible = true; mc3.onEnterFrame = function(){ this._y = 150; } } //以降、mc4、mc5は省略 } --------- --------- mc.num._visible = false; mc.num._alpha = 0; --------- の部分で、デフォルト時はmc1~5を非表示にしているつもりが、 最初から表示されてしまいます。 初心者なので、近いフラッシュを見よう見真似で作成しています。 根本的に記述法を間違えておりましたら、恐れ入りますがご指摘ください。 またもっと効率的な方法がありましたら、ご教授いただければ幸いです。 Flash8.0、ActionScript2.0で制作しています。

    • ベストアンサー
    • Flash

専門家に質問してみよう