• ベストアンサー

ムービークリップが残る

ムービークリップが,シーンをまたいで残ってしまうというのはどんな原因が考えられるでしょうか。 シーン1に置いているムービークリップなのですが,ドラッグの設定をしています。ドラッグをするとなぜかシーン2のほうに表れてしまいます。どうしてでしょうか。

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

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

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

#1です。 私,立派な(?)オヤジですので, swapDepth() のようなエロい ActionScript について真剣に訊かれると照れてしましますが, ちょっと(かなりハードに)エッチな言葉に,スワッピング(swapping)という言葉があります......よね? swapDepth() とは要するにそういうことです(゜_゜i)\(-.-メ) オイオイ。 半分冗談なのですが, swapDepth() は,つれあいを交換するのではなく,深度を交換するのです。 (スワッピング について知らない場合は調べなくて良いですよ。大したことはありません。) ---------- ( ̄+++θ ̄) 口チャック --------- swapDepth() で交換する 「深度」 とは, ステージ上に表示されているものの上下関係の深さの値です。 目で見える範囲ではレイヤーの上下関係のようなものが深度です。 深度は -16384 から 1048575 の範囲があって,数値が上のものほど上に表示されます。  1048575 上     :     :  -16384 下 仮に a_mc というインスタンス名のムービークリップと, b_mc というインスタンス名のムービークリップが同じ _root にあったとします。  上のレイヤー … a_mc 深度大  下のレイヤー … b_mc 深度小 この状態で, // a_mc の深度を b_mc の深度と入れ替える a_mc.swapDepths(b_mc); を実行すると, a_mc と b_mc の深度が入れ替わります↓。  上のレイヤー … b_mc 深度大  下のレイヤー … a_mc 深度小 しかし,あまりそういう使い方はしません。 普通は,深度に「数値」 もしくは,「getNextHighestDepth()」 を入れることが多いと思います。 つまり, // a_mc の深度を 1000 と入れ替える a_mc.swapDepths(1000); とか, // a_mc の深度を 最上深度の物の 次に上の深度と入れ替える a_mc.swapDepths(getNextHighestDepth()); とかいう感じの使い方をすることが多いということです。 レイヤー上に手動で配置したものの深度は,負(マイナス)の深度になります。 つまり,手動では -16384 から -1 の範囲内でしか,ものを作成できません。深度自体は自動で割り振られます。 ActionScript では,さらに上の深度 0 から 1048575 にムービークリップを作成したり,ムービークリップを置いたりすることができます。  1048575 ┐      : ActionScriptでのみ配置可能な深度      0 ┘      -1 ┐      : 手動でレイヤーに配置する深度  -16384 ┘ したがって, ActionScript で ムービークリップなどを作成 or 配置していない場合は, // a_mc の深度を 1000 と入れ替える a_mc.swapDepths(1000); を実行しただけで,a_mc は必ず一番上に表示されることになります。 もし swapDepths する前に深度1000に何も無い場合は, 深度の交換というよりも a_mc が深度1000に移動するだけになります。 ただし, 深度 0 以上にレイヤーというものは存在しないのですから,a_mc は宙に浮いた状態になります。 したがって,シーン 2 に移っても宙に浮いた状態のままになるので, 残ってしまうという現象が起きます。 > この回答を見る前にswapDepth()を消したら解決しました。 swapDepth()を消したら, ドラッグしているものが一番上に表示されなくなったのではないでしょうか? それで良ければそれで良いです。 おそらく,swapDepth() は, ドラッグするムービークリップを一番上に表示させるということが目的で使われていたのだと思います。 ただそれだけと言えばそれだけだと思うので,消して問題ない場合は消しても大丈夫です。 消したらスリリングな夜を過ごせなくなるだけです ((-_-;)/(+_+;)\(-_-;) 違うって!)。

calini501
質問者

補足

再度のそして丁寧なアドバイスありがとうございます。 (当方も立派なオヤジです。…。) BlurFiltanさんのご指摘通り,ドラッグするムービークリップが一番上に表示されなくなってしまいました。結局SwapDepthは復活です。 でも,次のようなやり方で何とか「残ってしまう」現象を解消することができました。 ドラッグするムービークリップ群をグループ化して新しい一つのムービークリップにする,というやり方です。 簡単にできるので,これで行こうと思うのですが,何か考えられる問題点があれば教えていただければと思います。 何度も何度も本当に申し訳ありません。

その他の回答 (1)

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

ドラッグするときに swapDepths() で深度変更しているからではないでしょうか。 深度を変更するとレイヤーに依存しなくなります。 深度0 以上に swapDepths() した場合は, removeMovieClip() で消してください。 つまり,シーン 2 の最初のフレームに, 消したいムービークリップのインスタンス名.removeMovieClip(); と書けば消えます。

calini501
質問者

補足

ご回答ありがとうございました。BlurFiltanさんのご指摘通りでした。 私の方では,この回答を見る前にswapDepth()を消したら解決しました。まだまだ初心者で分からないことだらけなのですが,swapDepthとはどのような目的で存在するものなのでしょうか。本を見ても「深度変更」とはなっていますが,どういう事なのかよく分かりません。よろしければ教えてください。よろしくお願いします。

関連するQ&A

  • ムービークリップの自動切り替え方法

    久しぶりにFLASHを触った初心者です。 シーン1の1フレにムービークリップを配置し、その1フレのムービー(10秒程度)が終わったらシーン2の2フレに配置したムービークリップが自動再生されるようなアクションスクリプトを考えています。例えばムービークリップの最後にgotoAndPlay(); など入れたりと試してみましたがうまくいかず困っています。 どなたか良い方法が無いか教えてください。 ※現在AS2.0を使って作成しています。

  • ムービークリップ内のムービークリップ制御について

    誠に不勉強の段お許しください。 Flashでサイトを製作しているのですが、どうしても分からず投稿させていただきました。 仮に -rootにボタンとAムービークリップ配置しました。 また、Aムービークリップ内の10フレー目にBムービークリップを配置し、Bムービークリップ内にボタンを配置しています。 _rootのボタンからAムービークリップを制御して10フレーム目のBムービークリップを表示はできるのですが、-root上でAムービークリップのBムービークリップ内のボタンでBムービークリップを制御するのにはどうすればよろしいのでしょうか。 なにとぞご教授いただけましたら幸に存じます。

  • ムービークリップの止め方

    ActionScriptでわからない部分があるので質問させていただきます。 ↓状況説明 1フレーム目にActionScriptで、ムービークリップが画面上をひたすら動き回る設定をします。 それとは別に背景などはフレーム単位で動かしています。 その後、100フレームになったらムービークリップのみ止めて(消して)、背景のみ動かして200フレームまで続行したいのです。 しかし、stopだと背景が止まってしまい、止めたいはずのムービークリップは動いたままの状態になってしまいます。 この場合は、どの部分にどんな命令を入れれば止める(消す)事が出きるのですか? お手数ですが、どうぞよろしくお願い致します。

  • ムービークリップの入れ子

    Flash CS3の初心者です。ムービークリップの入れ子を使用した際、こちらが思うようにフレーム処理をしてくれません。 "TOP"と名前をつけた1つのシーンに「アクションスクリプト」、「画像」、「テキスト」の3つのレイヤーを準備し、「画像」レイヤーには入れ子になったムービークリップを挿入しています。 入れ子のムービークリップに仕込んだモーショントゥイーンが終わってからテキストを表示する処理をしてほしいのですがうまくいかず困っています。 <作業内容> (1)画像レイヤーにはモーショントゥイーンを仕込んだムービークリップを1フレーム目から挿入しています。(作業場所:TOP/) (2)順序付けのためテキストレイヤーは1フレーム目は空白にし、2フレーム目から挿入しています。(作業場所:TOP/) (3)アクションスクリプトのレイヤーには1フレーム目と2フレーム目にはそれぞれ以下の記入をしています。(作業場所:TOP/)  this.stop(); (4)画像レイヤーに挿入したムービークリップでは、入れ子のムービークリップのレイヤーの他にアクションスクリプトのレイヤーを設け、その最終フレームでは"this.stop();"、"gotoAndPlay(2,"TOP");"と記入しています。(作業場所:TOP/画像ムービークリップ) <問題> (1)~(4)でムービープレビューを実行すると、入れ子にしたムービークリップのモーショントゥイーンは最後までうまくいきますが、(4)の"gotoAndPlay(2,"TOP");"がエラーとなり、「ArgumentError: Error #2108: シーン TOP が見つかりません。・・・」となってしまいます。 シーン名はウィンドウのシーンパネルで確かにTOPに変更しています。ちなみに"TOP"をthis.parentに変更して実行すると、3つのレイヤーの処理が同時にスタートしてしまいます。 最初に記載した動作の実現方法や参考HPについてご教授頂けると大変助かります。よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービーメーカーのクリップ移動について

    ムービーメーカーで、結婚披露宴のオープニングムービーを作っていますが、jpeg写真をドラック&ドロップでクリップの追加はできますが、その後そのクリップの移動ができません。 動画やタイトル、BGMまで入れていますが、後は写真を追加して完成予定でしたが、行き詰まりました。 お分かりになる方、ご教授ねがいます。 よろしくお願いいたします。

  • ムービークリップ

    ムービークリップをクリックすることによって、 他のムービークリップの位置を変更できますか? もしくは他のムービークリップの複製はできますか? 今はクリックしたムービークリップ(自分自身)の 複製は出来ています。 on (release) { this.duplicateMovieClip("Photo_big", 0); _root.Photo_big._xscale = 80; _root.Photo_big._yscale = 80; _root.Photo_big._x = 350; _root.Photo_big._y = 200; } ちなみに移動したいムービークリップのインスタンス名は text1です。

    • ベストアンサー
    • Flash
  • マウスオーバーで全ムービークリップ停止

    上手く説明出来ないのですが、 ムービークリップのメニューを作ろうとしています。 マウスオーバーで全部のムービーが止まる様にしたくて、 一つのムービークリップに全部のムービークリップのメニューをまとめ、選択すると ーーーーーーーーーーーーーーーーここから シーン=シーン1,レイヤー=menu,フレーム マウスイベントはボタンインスタンスでのみ使用できます。 シーン=シーン1,レイヤー=menu,フレーム マウスイベントはボタンインスタンスでのみ使用できます。 ーーーーーーーーーーーーーーーーここまで とエラーになってしまいます。 だからといってメニュー一つ一つに on(rollOver){ stop(); } on(rollOver){ play(); } を記述しても、マウスオーバーしているメニューだけが止まって、 他のメニューは動いてぐちゃぐちゃになってしまいます。 ひとつのメニューをマウスオーバーするだけで他全部のムービークリップも停止、 マウスをはずすと同じ所から動きだす事って出来ますか? いい方法がありましたら教えて下さい。

  • ムービークリップのドラッグ

    A、Bの2つのムービークリップがあって、AをドラッグするとBも一緒についてくるというスクリプトを書いているのですが、どうしても、Bの方が遅れてしまいます。完全に同期させる方法はないのでしょうか。 ちなみに、BにonClipEvent(mousemove)でAの座標をとって、そこからBとの差をひいて、Bの座標を書き換えるスクリプトを書いています。

  • ムービークリップシンボルとは?

    FLASH超初心者です。 こちらで質問したり、参考書を使って独学しているのですが、まだまだ理解できないことがあります。 ムービークリップシンボルという言葉が出てきたのですが、これはどういった意味なのでしょうか? わかりやすく解説していただけないでしょうか? また、タイムラインからムービークリップシンボルを探し出す方法がわかりません。 どのような手順で、タイムラインからムービークリップシンボルを探すことができるのでしょうか? ライブラリからムービクリップシンボルを探し出すことはできたのですが、タイムラインからムービークリップシンボルを探し出すことができません。 どなたか詳しい方、わかりやすく教えていただけないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Flash
  • ムービークリップから親のタイムラインを変更する

    ■シーン1 ラベル1---クリップ1(ボタン)--ラベル2---- FlashMXでひとつのシーンにラベルを2つ付け、その間にムービークリップを1つ入れているのですが、そのクリップから、フレームアクションとしてラベル2に飛ばすように、gotoAndPlay("シーン1", "ラベル2"); を 指定したのですが、ラベル1(クリップ1の再現)に飛んでしまいます。 どうすればクリップの中からシーン1のラベル2に飛ばすことができるのでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう