- ベストアンサー
Flashのキーボード操作でキーボードのテンキーでコマンドを選択するアクションスクリプトの横移動がうまくいかない
- Flashのキーボード操作でキーボードのテンキーを使用してコマンドを選択するアクションスクリプトを組んでいますが、横移動がうまくいかない問題が発生しています。
- 上下の移動は正常に動作するが、横移動の際に予期しない位置に移動してしまうことがあります。
- アクションスクリプトを見直しても解決策が見つからず、どのように修正すれば横移動が正しく動作するか困っています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
(´・д・`) 言い忘れないでください... 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; } } }
その他の回答 (4)
- zari514
- ベストアンサー率48% (26/54)
> このアクションスクリプトで実行してみたのすが・・・・・・ > 同じテンキーを二回押す、上を二回押すと飛びだしてしまいました・・・・・ うごきますが・・・・ http://www.geocities.jp/ocnizim/ugoki.html mcを配置した座標に端数があるからでしょう。 Math.floor ()で端数を丸めてみて下さい。
お礼
問題解決しました。 ムービークリップの座標位置が整数値にしなければけなかったようです。 どうもありがとうございました。
補足
載せてあるURLに行ってみたのですが動きませんでした・・・・。 Math.floor ()はどこに記述すればいいのですか? あとムービークリップを整数値にすればいいのでしょうか
- zari514
- ベストアンサー率48% (26/54)
あ、ごめんなさい。注釈まちがえました(>_<) コード部分、下から3行目。 誤 //現在のx位置から+30の位置へ。 ↓ 正 //現在のx位置から+50の位置へ。 あ、ちなみにスペースバーのくだりは関係ないので割愛してます。
補足
お答いただきありがとうございます。 実は補足し忘れていたのですが・・・・・・ 現在位置でテンキーを二回押したら最初の一に戻るという風にしたいのです。 →コマンド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)
オリジナル///////////////////////////////////////////////// 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)
つっこみどころ満載で... とりあえず... 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; } }
補足
このアクションスクリプトで実行してみたのすが・・・・・・ 同じテンキーを二回押す、上を二回押すと飛びだしてしまいました・・・・・