• ベストアンサー

Flashでムービークリップを常に上に表示する方法

Flashの初心者で、次のことにつまずいています。 初心者のためにわかりやすく教えていただけたら助かります。 複数のムービークリップ(MC)があるとします。 その中のMCの1つをドラッグして他のMCに重なったときに、ドラッグしたMCが常に他のMCの上に表示されるようにしたいのですが・・・。 どのMCをドラッグした場合でも、他のMCの上に表示されるようにしたいです。 Flashのバージョンは、CS5.5で、アクションスクリプト2.0を使用しています。 どうぞよろしくお願いいたします。

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

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

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

Flash CS 5.5 は良いとして 今回のご質問での ActionScript 2.0 とは微妙ですね。。。 普通は 「ActionScript 2.0 を使用→Flash Player 7 以上用 SWF をパブリッシュ」 というのが一般的なのですが ActionScript 2.0 は場合によって Flash Player 6 でも 動作するのです。 今回質問されているものの場合 ちょうどその境界部分の辺に関係する箇所があって Flash Player 6 用と Flash Player 7 以上用 SWF とでは 違って来る部分が出て来るので どう回答すべきか悩むところです。 (具体的には getNextHighestDepth が使えるか使えないかという違いがあります。) しかしまあ, 字数もそんなに多くはならないと思うので Flash Player 6 用 SWF をパブリッシュする場合と Flash Player 7 以上用 SWF をパブリッシュする場合との 両方のスクリプト例を回答することにします。 大雑把に言えば Flash Player 6 用でも Flash Player 7 以上用でも どちらにしても一般的によく使われている方法の内容は同じで マウスプレスした(またはマウスアップした) MC の深度を その MC が存在する階層での一番上の深度に swapDepths させれば良いわけです。 この説明では Flash Player 6 用でも 7 以上用でも どちらにしてもとりあえず ドラッグする4つのMCに全て違うインスタンス名を付けます。 どれがどれでも良いので ステージ上のドラッグする4つの MC を1つずつ選択して プロパティインスペクタより,例えば 「drag_mc0」「drag_mc1」「drag_mc2」「drag_mc3」 というインスタンス名を付けるとします。 その場合の Flash Player 6 用 SWF をパブリッシュする場合の 4つの MC が存在する タイムライン の "フレーム" に書くスクリプト例です。 (この例では "MC 自体" にはスクリプトは一切書きません。)   ◎ Flash Player 6 以上用 SWF のスクリプト //------------------------------------ //深度カウント用変数を用意 var dep_cnt:Number = 0; //変数 i に 0~3 を入れながらループ for (var i:Number = 0; i<=3; i++) { //「drag_mc○」押下時に関数 dragMC を実行 this["drag_mc"+i].onPress = dragMC; //「drag_mc○」を放した時に関数 dropMC を実行 this["drag_mc"+i].onRelease = dropMC; //「drag_mc○」をMC外で放した時にも関数 dropMC を実行 this["drag_mc"+i].onReleaseOutside = dropMC; } //関数 dragMC の定義 function dragMC():Void { //深度カウント用変数をカウントアップ dep_cnt++; //押下されたMCをその深度に移動 this.swapDepths(dep_cnt); //押下されたMCのドラッグを開始 this.startDrag(); } //関数 dropMC の定義 function dropMC():Void { //放されたMCのドラッグを終了 this.stopDrag(); } //------------------------------------   ◎ Flash Player 7 以上用 SWF のスクリプト //------------------------------------ //変数 i に 0~3 を入れながらループ for (var i:Number = 0; i<=3; i++) { //「drag_mc○」押下時に関数 dragMC を実行 this["drag_mc"+i].onPress = dragMC; //「drag_mc○」を放した時に関数 dropMC を実行 this["drag_mc"+i].onRelease = dropMC; //「drag_mc○」をMC外で放した時にも関数 dropMC を実行 this["drag_mc"+i].onReleaseOutside = dropMC; } //関数 dragMC の定義 function dragMC():Void { //押下されたMCを最高深度に移動 this.swapDepths(getNextHighestDepth()); //押下されたMCのドラッグを開始 this.startDrag(); } //関数 dropMC の定義 function dropMC():Void { //放されたMCのドラッグを終了 this.stopDrag(); } //------------------------------------   上のスクリプト例では2例とも MCを押した時点で(関数 dragMC 実行時に) そのMCの深度を最高深度に移動させていますが, MCを放した時点で(関数 dropMC 実行時に) そのMCの深度を最高深度に移動させても良いです。 ちなみに this["drag_mc"+i].onPress = dragMC; などで使った [ ] を「配列アクセス演算子」と言います。 (名称不明な [ ] では調べようにも検索しにくいですよね。) 「FN0507001-ドット演算子と配列アクセス演算子」 http://www.fumiononaka.com/TechNotes/Flash/FN0507001.html その他に関しての詳細などは 例えば「Flash イベントハンドラメソッド」とか 例えば「ActionScript swapDepths」とか そんな感じのキーワードでGoogleなどで検索してもらうと 色々な情報がわかると思います。

kochacha
質問者

お礼

迅速なご回答、本当に本当に感謝いたします。 Flash初心者の私にとってとてもわかりやすく説明していただいたことと きちんと対応していただいたことに本当に感謝いたします。 早速試してみたいと思います。 本当にありがとうございました。 追伸。BlurFiltanさんは、数多くのご質問に丁寧なご回答をなさっていますね。    すばらしいお方だと感心しきりです。    今後ともよろしくお願いいたします。

関連するQ&A

  • flash ウインドウの大きさを変更しても常に定位置

    falsh8でアクションスクリプトのバージョンは1でわからないことがあるので教えてください。 ステージ上に、 ムービークリップの インスタンス名 mc1 と ムービークリップの インスタンス名 mc2 と ムービークリップの インスタンス名 mc3 を配置しております。 ブラウザのウインドウの大きさを変更しても常に、 mc1 はウインドウの最上部に表示 mc2 はウインドウの中央部に表示 mc3 はウインドウの最下部に表示させたいのですが、どういうスクリプトを書けばよいでしょうか? 教えてください、よろしくお願いします。

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

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

  • <Flash>ムービークリップにアクションスクリプトを記述できない。

    <ムービークリップ>インスタンスにアクションスクリプトを 記述するために、スクリプトペインを開くと、 「現在の選択範囲にアクションを割り当てることはできません」 と表示されます。 きちんとムービークリップ化していますし、 インスタンスも選択しています。 でもフラッシュを勉強して間もないので、 おそらく根本的ななにかに気づいてないのだと思います。 書籍に書いてある通りに作業を進めているのですが、 うまくいきません・・・。 書籍に付属しているサンプルデーターでは、 きちんとムービークリップにスクリプトが記述されています。 バカな質問になっているかもしれませんが、 宜しくお願いいたします。

  • Flash8 ムービークリップをランダムに表示(更新する度に順番を変更)

    他の質問を確認させて頂いたのですが「更新する度に順番を変更」という部分で行き詰まり、今回質問させて頂きました。色々と調べたのですが、同じ質問が存在していたら申し訳ございません。 今回FLASHの作成で、1つのSWF内で3つのムービークリップ(mc_01、mc_02、mc_03)をランダムな順番で表示させたいというものです。ランダムに表示させるまでは、何とか行き着いたのですが、行き詰まったのは「更新の度に前回と順番が重複しない」ということです。 現在の状況は、下記の通りです。 mainというムービークリップに3つのムービークリップ(mc_01、mc_02、mc_03)をランダムに表示。 スクリプトは、下記の通りです。 var a = Math.floor(Math.random()*3)+1; main.attachMovie(["mc"+a], "mc", 0); 現状だと、更新する度にランダムに表示されますが、更新を押した際に、先頭が前回と同じムービークリップになってしまうことがあります。 (一回目の更新:mc_02 → mc_01 → mc_03) (二回目に更新:mc_02 → mc_03 → mc_01) この並びをアクションスクリプトで変えることは可能なのでしょうか?可能だとすれば、どのようなスクリプトを記述、もしくは参考にすれば良いでしょうか? 初心者な質問で申し訳ございませんが、宜しければどなたかご回答のほど宜しくお願い致します。

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

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

  • FLASHでボタンを押すと、FLASHムービーが再生から停止までいくようにしたいです。

    FLASHの初心者です。 以下の物が作りたくてチャレンジをしております。 構成的には、一個の画面と、一個のボタンがあり、 あらかじめFLASHムービーを何個か作り、 一個のFLASHファイルに読み込んで、 ボタンを押すと一個目のムービーが再生、最終フレームで停止、 もう一回ボタンを押すと次のムービーが再生、最後… という具合にしていきたいです。 おそらくアクションスクリプトを使用して作らなければならないと 思うのですが、うまくできないのです… ついでにもう一つ、お聞きしたいことがあります。 フレーム数を右下に常に表示させたいです。 この方法も教えて欲しいです。 使用ソフトはFLASH CS3で、アクションスクリプトは3.0を使っています。 説明下手ですみません… よければ誰か助けてください>△<

  • FLASHで外部ムービークリップのコントロール

    現在学校に通いFLASHの勉強をしています。 ある程度の基本的なスクリプトなら自分で書けるレベルです。 今回、学校での課題作成にあたり 外部のSWFファイルに配置したムービークリップのコントロールというのは出来るのかどうかが分からず投稿しました。 使用ソフトはflashCS3です。 例えば、a.swfにボタンを配置し、 押したらb.swfの「b_mc(ムービークリップ)を再生」とかはアクションスクリプトで制御出来るのでしょうか? また、こういった動作をしたい時のスクリプトの書き方などを回答として頂けると助かります。 よろしくお願いします。

  • Flashで外部から画像を読み込み、それを円で表示させる方法

    はじめまして。 Flashを始めたばかりの初心者です。 困っていることがあるので投稿させていただきました。 環境はFlash CS3 Professional、OSはMacOSX10.5.4です。 現在、外部からjpg等の画像をムービークリップに読み込み、そのさいに 読み込まれた画像を円の形にして表示させて読み込んで それをドラッグアンドドロップで動かすことができるというアイコンを製作中です。 初心者なりにがんばってできたところは 外部イメージファイルをムービークリップに読み込むということと ドラッグアンドドロップさせるという部分なのですが 画像を円の形にして表示させるという方法がわからないのです。 やってみた方法として 画像が読み込まれるムービークリップの上のレイヤーに円の形のマスクをかけたりしてみたのですが 画像のみ動いてしまい、理想としている形にはなりませんでした。 マスクとムービークリップを一緒に動かすということはできるのでしょうか。 また、他にもなにか良い方法はないでしょうか。よろしくお願いします。

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

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

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

    flash8で作成しているのですが、ムービークリップをステージに配置した時に真ん中にある丸は何の意味があるのでしょうか? 左上にある丸の中にバツが書いてあるのは位置表示ですよね? それと、ムービークリップでも真ん中の丸が無いものもあります。 flashの古いバージョンで作成したものがそうなるのかな?とは思っているのですが。。。

専門家に質問してみよう