オートリピート

キーのオートリピート機能を作ろうと思って四苦八苦。
意外にややこしい。


基本的にはkeyPush?とpadPush?にかかるようにしようと思う。
考え方としては、最初に押されてから次の入力がはいるまでの時間(フレーム数)と、2回目以降の間隔(フレーム数)で設定する。
Input.setRepeat(wait, interval)みたいな感じ。
解除は両方をnilにするか、解除用のメソッドを用意するか・・・まあ、テキトーに。


何が問題なのかというと、たとえば、2つ以上のキーを押した場合とか、1個押してリピート中に違うのを押してはじめのを離すとか、リピート中に1フレームも間が空かないタイミングで違うキーに押しかえるとか、そういう場合の動作だ。
オートリピートっつーのはもともと、どのキーが押されたのかを文字コードやキーコードで返すような機能で使うものだから、キーごとに状態を持つような機能で使うと、ちょっとなんだか違うって感じになってしまう。
このあたりは、OSやライブラリでも違うし、ゲームでもモノによってまちまちな動作をしている気がする。
どーでもいいと言えばどーでもいいんだろうけど、単純に見えてなんらかのスタイルや考え方が潜んでいるのかもしれない。


テキトーでいいか。