[Javascript] 格闘ゲームみたいなコマンドが打てるJavascriptのクラス作ってみました。

暇なときに面白いエントリー「お知らせ:「コナミコマンド」を実装しました | N-Styles」があったのでクラス化してみました.
雑な実装のしかたなんでソースが汚い。

コマンド判定

  • キー入力の履歴
  • キー入力の時間
  • キー入力のパターン
  • 長いコマンドを優先して実行

サンプル

はてなダイアリーだとJavascript貼れないのでここにサンプルを置いときました。

実装方法

一番シンプルな実装。

//インスタンスを作る
var ac = new ActionCommand();

// コマンドを設定
ac.addCommandListener([40,[40,39],39,65],function(){
    jsconsole.innerHTML='波●拳!';
});
  • new ActionCommand([target])
    • targetにはイベントを割り振りたい要素を指定
    • new ActionCommand(document.getElememtById('target'));みたいにする。
    • targetのデフォルトはdocument
  • addCommandListener(commands, func[, expiryTime])
    • コマンドの割当
    • commandsはサンプルの様にキーコードを配列で指定、同時押しは上記のように配列で囲む(二次元配列)。
    • funcはコマンドが打たれたときに実行。
    • expiryTimeはコマンド認識時間をミリ秒で指定。(fpsも対応してあるけど)
    • expiryTimeのデフォルトはcommands.lengthで自動的に計算。

感想

意外とメンドクサイ、もっとラクに作れると思ってたのに。

追記

MITライセンスにしたので自由に使ってください。