getkeyのリセット
投稿者 : Moon(gw000006.ueda.ne.jp)
- 2011/06/28(Tue) 23:30
No.13081
|
|
|
|
|
while(1){ if (getkey(38)>=0){ print(getkey(38);} }
上記のようなプログラムを組んでgetkeyの値を出力しました。 キーを押し続けている間、getkeyの値は増えていきます。
キーを離せば値は0になるんですが、プログラム上でgetkeyの値をリセットすることはできるのでしょうか?
|
Re:getkeyのリセット
投稿者 : リセッタ(em114-48-180-38.pool.e-mobile.ne.jp)
- 2011/06/29(Wed) 07:43
No.13082
|
|
|
|
>プログラム上でgetkeyの値をリセットすることはできるのでしょうか? できません。でも、工夫すれば同等の事は出来るでしょう。
A.リセットもどき
function getUpKey() { var key=getkey(38); if(key) key-=offsetUp; else offsetUp=0; return key; } function resetUpKey() { offsetUpKey=getkey(38); }
B.指定フレーム数毎にキー入力された事にする。 キーボードのオートリピート(連射)ってやつですね。
// vkey 仮想キーコード // rFrame リピート間隔(フレーム単位) // rWait リピート開始までの時間(フレーム単位) 省略可 function repeatKey(vkey,rFrame,rWait) { var key; key=getkey(vkey); // 修正 if(key>rWait) key=(key-rWait)%rFrame; return key; // 修正 } //使用例 1 while(1) { // [↑]キーをリピート開始まで0.5秒、0.25秒毎のリピートの場合 // フレームは何もしていなけば1/60秒毎 if(repeatKey(38,15,30)==1) { print(getkey(38)); } update(); }
// 使用例 2 while(1) { if(repeatKey(38,15,30)) { // [↑]キー リピート if(repeatKey(38,15,30)<(3+1)) y-=2; // 3フレームだけ移動 } update(); }
※ 単純なリピート判定なら (getkey(n)%r)==1 でOK while(1) { if((getkey(38)%15)==1) print(getkey(38)); update(); // [↑]キーを0.25秒毎 }
※ おまけ ワンショット(キー押下した時だけ) while(1) { if(getkey(38)==1) print(getkey(38)); update(); // [↑]キー ワンショット }
|
Re: getkeyのリセット
投稿者 : Moon(pl286.nas931.p-nagano.nttpc.ne.jp)
- 2011/06/29(Wed) 11:38
No.13083
|
|
|
|
回答ありがとう御座います。
早速提示していただいたプログラムを起動させてみたのですが、文法エラーが返ってきました。
動かしてみたいのですが、どうしたらいいのでしょうか?
// vkey 仮想キーコード // rFrame リピート間隔(フレーム単位) // rWait リピート開始までの時間(フレーム単位) 省略可 function repeatKey(vkey,rFrame,rWait) { var key=getkey(vkey); if(key>rWait) key=(key-rWait)%rFrame; return ket; } //使用例 while(1) { // [↑]キーをリピート開始まで0.5秒、0.25秒毎のリピートの場合 // フレームは何もしていなけば1/60秒毎 if(repeatKey(38,15,30)==1) { print(getkey(38)); } update(); }
|
Re:getkeyのリセット
投稿者 : リセッタ(em114-49-128-236.pool.e-mobile.ne.jp)
- 2011/06/29(Wed) 12:08
No.13084
|
|
|
|
Re: getkeyのリセット
投稿者 : Moon(pl286.nas931.p-nagano.nttpc.ne.jp)
- 2011/06/29(Wed) 19:34
No.13086
|
|
|
|
|