連続KeyDownに対するユーザビリティの向上
TLifeのDataGridでカーソルキーを押してKeyDownイベントを起こすと、selectionを上下に動かすほかに、ReplyGetThreadなる、reply先探索用のThreadが走る。実際にはKeyDownの処理関数でフラグを立てていて、別のタイマーの処理関数でフラグを読んでReplyGetThreadを走らせている。
次のKeyDownイベントが起こってしまうと前のReplyGetThreadは当然必要なくなるのでinterruptするのだが、カーソルキーを押し続けるとこの動作が連続して起きる。そうすると見た目ぎこちなくなってしまう。
どうしたものかと考えたが、ぎこちなくなるのは押し続けたときだけなので、KeyDown時にタイマーをsuspendして、KeyUp時にsuspendを解けばいいんじゃないかと考えて実装してみたら押し続けたときは問題なくなった。
ここまで書いて思ったんだけれど、
- キーを高速連打した場合どうなるんだろ
- タイマーいらなくね?
タイマーはTweenにも入っていて負荷軽減用らしいんだけど・・
試してみると、低速連打でもぎこちない・・とりあえずタイマーの間隔を長くして持ちこたえるしかないのかな。