dポイントプレゼントキャンペーン実施中!

javascriptに関する質問です。

例えば下のようなコードを書いたとします。
if(e.keyCode==39)X=X+10;
if(e.keyCode==37)X=X-10;
document.getElementById('me');
me.style.left=X;

つまり、十字キーの右を押したらキャラクター「me」が10px右へ、左を押したら10px左へ動きます。

質問したいのはキーを押しっぱなしにした場合の動作に関してです。
右を押すと、右へ一度動いて、そこで一度止まり、その後ザーっと動き出します。最初の動作の後にほんのわずかなんですが、「ため」のような間があるために満足いく動きが出せていません。
キーを押した瞬間からスムーズに動かすにはどうしたらよいでしょうか?

A 回答 (1件)

おそらくリピートキーイベントが発生するまでの時間のことをおっしゃっているのだと思います。


キーを押すとkeyDownイベントが発生し、それからリピートキーイベントが発生するまでのインターバルはシステムによって管理されています。

キャラクターの移動などでは、キーイベントから直接キャラクターを移動させるのではなく、「移動中」フラグを別に用意して、(キーではなく)タイマーによって『「移動中」フラグがONなら移動を続ける』サブルーチンを作っておき、keyDownイベントでは「移動中」フラグをONにして上記ルーチンを呼び出す、keyUpイベントでは「移動中」フラグをOFFにする、というようにします。
    • good
    • 1
この回答へのお礼

教えていただきましたように、キーの押・離をフラグで管理して、それを一定時間ごとに見に行くようにすると思うとおりの動きが実現できました。

一人ではこの方法思いつかなかったと思います。
ありがとうございました。

お礼日時:2006/08/17 12:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!