• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Flashでの座標指定におけるボタン有効化)

Flashでの座標指定におけるボタン有効化

このQ&Aのポイント
  • FLASH CS4で作成中のゲームで、ボタンを特定の座標内に入ったときにクリック可能にするにはどうすれば良いですか?
  • バージョンFLASH CS4を使用しているゲームで、特定の座標内に移動した時にボタンをクリックできるようにしたいです。
  • FLASHで作成中のゲームにおいて、十字キーで移動した時にボタンを特定の座標内で有効にしたいですが、どのようにASを記述すれば良いでしょうか?

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

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

> ifでmcが座標内に入っていたら、ボタンをenabled=trueにする感じでしょうか? それで良いと思います。 あとは 「いつそうするのか」 が残りますが, これはおそkらく 「十字キー をアップしたとき」 で良いと思います(十字キー とは何かが不明ですが...)。 メインのタイムライン(_root)に, 「my_btn」 というインスタンス名のボタンと 「my_mc」 というインスタンス名のムービークリップがあったとします。 その場合, メインのタイムライン(_root)のフレームに書くスクリプト例です↓。 ////////////////////////////////////////////////////////////////// // 移動するスピード(px/frame)を設定 var spd:Number = 2; // my_btn の ボタン機能を無効にする my_btn.enabled = false; // キーを監視する用のオブジェクトを作成 var keyLsn:Object = new Object(); // カスタム関数 moveMC を定義 function moveMC(my_x, my_y):Void { // my_mc に毎フレーム実行するイベントハンドラメソッドを定義 my_mc.onEnterFrame = function():Void { // my_x・my_y の値ずつ移動 this._x += my_x; this._y += my_y; }; } // キーが押されたとき実行するイベントハンドラメソッドを定義 keyLsn.onKeyDown = function():Void { // もし「↑」キーが押されていたら if (Key.getCode() == Key.UP) { // カスタム関数 moveMC を実行(上に移動) moveMC(0, -spd); // もし「↓」キーが押されていたら } else if (Key.getCode() == Key.DOWN) { // カスタム関数 moveMC を実行(下に移動) moveMC(0, spd); // もし「←」キーが押されていたら } else if (Key.getCode() == Key.LEFT) { // カスタム関数 moveMC を実行(左に移動) moveMC(-spd, 0); // もし「→」キーが押されていたら } else if (Key.getCode() == Key.RIGHT) { // カスタム関数 moveMC を実行(右に移動) moveMC(spd, 0); } }; // キーが放されたとき実行するイベントハンドラメソッドを定義 keyLsn.onKeyUp = function():Void { // my_mc.onEnterFrame を削除 delete my_mc.onEnterFrame; // // ↓★---ご質問の本題はココの範囲だけ---★↓ // もし my_mc の座標が 10<=x<=50、10<=y<=50 であれば if (my_mc._x>=10 && my_mc._x<=50 && my_mc._y>=10 && my_mc._y<=50) { // my_btn の ボタン機能を有効にする my_btn.enabled = true; // それ以外は } else { // my_btn の ボタン機能を無効にする my_btn.enabled = false; } // ↑★---ご質問の本題はココの範囲だけ---★↑ }; // Keyクラスのリスナーとして keyLsn を登録 Key.addListener(keyLsn); ////////////////////////////////////////////////////////////////// ※「ある座標内(10<=x<=50、10<=y<=50)に入ったとき」 とは,   「ムービークリップmy_mc の座標が座標内に入ったとき」   すなわち,   「ムービークリップmy_mc の基準点の座標が座標内に入ったとき」   と解釈した上でのスクリプトです。 もし「ムービークリップの基準点」が 何のことかわからない場合は 次のページをご参考に (「+」印の位置のことです)。 「インスタンスの基準点」 http://homepage3.nifty.com/ginga-b/MX/inst_refpoint.html