
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/FN050 …
その他に関しての詳細などは
例えば「Flash イベントハンドラメソッド」とか
例えば「ActionScript swapDepths」とか
そんな感じのキーワードでGoogleなどで検索してもらうと
色々な情報がわかると思います。

この回答へのお礼
お礼日時:2013/07/26 20:09
迅速なご回答、本当に本当に感謝いたします。
Flash初心者の私にとってとてもわかりやすく説明していただいたことと
きちんと対応していただいたことに本当に感謝いたします。
早速試してみたいと思います。
本当にありがとうございました。
追伸。BlurFiltanさんは、数多くのご質問に丁寧なご回答をなさっていますね。
すばらしいお方だと感心しきりです。
今後ともよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
縦横比率のを変えずに画像のサ...
-
VBAユーザーホームテキストボッ...
-
VBAで改行の入ったデータの正規...
-
テキストファイルから読み込ん...
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
photoshopで書いた四角の枠の中...
-
static関数がmapファイルに載ら...
-
マウス自体の移動量の取得
-
SO-01B(2.3.3)のroot化について
-
フォームのテキストの入力数字...
-
Access2000 実行時エラー '3061':
-
【VB.NET】別Formのボタンが押...
-
全てのテキストボックスをセル...
-
アセンブリ言語のcasl2について...
-
テキストボックスの中身をリセ...
-
Flashの画面をJPEG画像にしてメ...
-
ランダムに4桁の数字を表示する...
-
リッチテキストボックスでの書...
-
シンボル化解除の方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
代入しない文字の連結方法
-
文字列の分解・格納
-
アンケートについて
-
FLASHの初歩のようで、載ってない
-
【ActionScript】createEmptyMo...
-
ピクチャーコントロールのデバ...
-
コンプトン散乱について
-
コンボボックスでのMCの制御
-
自由線とレイヤー画面との位置関係
-
外部swf(jpg)に対するLoading表示
-
FLASHでスロットゲームを作りた...
-
AS3.0でマウスボタンの状態を調...
-
サムネイルをクリックすると拡...
-
テキストファイルから読み込ん...
-
flash as3 ムービークリップの...
-
ActionScript - 複数の空ムービ...
-
縦横比率のを変えずに画像のサ...
-
Flashで外部jpgファイルをmcに...
おすすめ情報