• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Flashのキーボード操作で)

Flashのキーボード操作でキーボードのテンキーでコマンドを選択するアクションスクリプトの横移動がうまくいかない

このQ&Aのポイント
  • Flashのキーボード操作でキーボードのテンキーを使用してコマンドを選択するアクションスクリプトを組んでいますが、横移動がうまくいかない問題が発生しています。
  • 上下の移動は正常に動作するが、横移動の際に予期しない位置に移動してしまうことがあります。
  • アクションスクリプトを見直しても解決策が見つからず、どのように修正すれば横移動が正しく動作するか困っています。

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

  • ベストアンサー
  • zari514
  • ベストアンサー率48% (26/54)
回答No.4

(´・д・`) 言い忘れないでください... onClipEvent (load) { XX = _x; YY = _y; } onClipEvent (keyDown) { if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { if (_y == YY) { this._y += 30; } else { this._y -= 30; } } else if (Key.isDown(Key.RIGHT) or Key.isDown(Key.LEFT)) { if (_x == XX) { this._x += 50; } else { this._x -= 50; } } }

noname#46595
質問者

補足

このアクションスクリプトで実行してみたのすが・・・・・・ 同じテンキーを二回押す、上を二回押すと飛びだしてしまいました・・・・・

その他の回答 (4)

  • zari514
  • ベストアンサー率48% (26/54)
回答No.5

> このアクションスクリプトで実行してみたのすが・・・・・・ > 同じテンキーを二回押す、上を二回押すと飛びだしてしまいました・・・・・ うごきますが・・・・ http://www.geocities.jp/ocnizim/ugoki.html mcを配置した座標に端数があるからでしょう。 Math.floor ()で端数を丸めてみて下さい。

noname#46595
質問者

お礼

問題解決しました。 ムービークリップの座標位置が整数値にしなければけなかったようです。 どうもありがとうございました。

noname#46595
質問者

補足

載せてあるURLに行ってみたのですが動きませんでした・・・・。 Math.floor ()はどこに記述すればいいのですか? あとムービークリップを整数値にすればいいのでしょうか

  • zari514
  • ベストアンサー率48% (26/54)
回答No.3

あ、ごめんなさい。注釈まちがえました(>_<) コード部分、下から3行目。 誤  //現在のx位置から+30の位置へ。 ↓ 正  //現在のx位置から+50の位置へ。 あ、ちなみにスペースバーのくだりは関係ないので割愛してます。

noname#46595
質問者

補足

お答いただきありがとうございます。 実は補足し忘れていたのですが・・・・・・ 現在位置でテンキーを二回押したら最初の一に戻るという風にしたいのです。 →コマンド1 コマンド2  コマンド3 コマンド4 とあったら →がテンキーの右を押すことによってコマンド2へ。コマンド2へ移ったらもう一回テンキーの右を押すとコマンド1へ戻る。というような処理を施したいのです。 そのためにif (Key.isDown(Key.UP) or Key.isDown(Key.DOWN))という処理をしているのですが・・・・・ もし onClipEvent (keyDown) { if (Key.isDown(Key.UP)) { this._y -= 30; } else if (Key.isDown(Key.DOWN)) { this._y += 30; } else if (Key.isDown(Key.LEFT)) { this._x -= 50; } else if (Key.isDown(Key.RIGHT)) { this._x += 50; } } としてしまうと画面からはみ出てしまったり、選択コマンドから予期せぬところに移動してしまいます。

  • zari514
  • ベストアンサー率48% (26/54)
回答No.2

オリジナル///////////////////////////////////////////////// onClipEvent (keyDown) { if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { //アローキーの「上」か「下」が押されたら this._y += 30; //現在のy位置から+30の位置へ。 } else if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { //アローキーの「上」か「下」が押されたら this._y = -30; //y位置を“-30”へ。(現在値関係なし...) } else if (Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)) { //アローキーの「左」か「右」が押されたら this._x = +50; //x位置を“50”へ。(現在値関係なし...) } else if (Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)) { //アローキーの「左」か「右」が押されたら this._x = -50; //x位置を“-50”へ。(現在値関係なし...) } } 修正版////////////////////////////////////////////////////// onClipEvent (keyDown) { if (Key.isDown(Key.UP)) { //アローキーの「上」が押されたら this._y -= 30; //現在のy位置から-30の位置へ。 } else if (Key.isDown(Key.DOWN)) { //アローキーの「下」が押されたら this._y += 30; //現在のy位置から+30の位置へ。 } else if (Key.isDown(Key.LEFT)) { //アローキーの「左」が押されたら this._x -= 50; //現在のx位置から-50の位置へ。 } else if (Key.isDown(Key.RIGHT)) { //アローキーの「右」が押されたら this._x += 50; //現在のx位置から+30の位置へ。 } } 補足////////////////////////////////////////////////////// とりあえず「_y=+30」と「_y+=30」は違います。 _y=+30はどの位置にあっても_y位置を「30」にします。 _y+=30は現在の_y位置から+30の位置にします。  ※「_y+=30」は、「_y=_y+30」と同じなのです。 他、意味をよく理解してコーディングしましょう。(^-^)

  • zari514
  • ベストアンサー率48% (26/54)
回答No.1

つっこみどころ満載で... とりあえず... onClipEvent (keyDown) { if (Key.isDown(Key.UP)) { this._y -= 30; } else if (Key.isDown(Key.DOWN)) { this._y += 30; } else if (Key.isDown(Key.LEFT)) { this._x -= 50; } else if (Key.isDown(Key.RIGHT)) { this._x += 50; } if (Key.isDown(Key.SPACE)) { _root.flag = 1; } }

関連するQ&A