LoginSignup
6
5

More than 5 years have passed since last update.

便乗してコナミコマンドのjQueryプラグインつくった。

Posted at

コナミコマンドとは

  1. B
  2. A

の順番で入力するとなんかが起きるコマンド。
グラディウスのやつが有名。

どんなものか

  • コナミコマンドの入力に成功すると、animate()に対応したアクションを起こすことができる
  • 単純にanimate()を呼び出す条件みたいのをつけてるだけなので、引数そのままで置換すればよい
before.js
$("#foo").animate({"height": "100px"}, 100);

これを

after.js
$("#foo").konami({"height": "100px"}, 100);

こうっ!

なかみ

konami.js
;(function($){
    $.fn.konami = (function(styles, duration, easing, callback){
        var $this = $(this),
            input = [],
            command = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
        input = command.slice(0);

        $(window).on("keyup", function(e){
            var key = e.keyCode;

            if (key == input[0]) {
                input.shift();

                if (input.length == 0) {
                    return $this.animate(styles, duration, easing, callback);
                }
            } else {
                input = command.slice(0);
            }
        });
    });
})(jQuery);

なぜつくったのか

  • たまたまQiita開いたらトップに他の方が作ったものがあがってたから。
  • んで、その中のアルゴリズムとは別のアプローチを思いついたから。
  • んでんで、その実装が10分もかからなそうだと判断したから。

課題

  • メソッドチェーンしようとするとエラー処理をいれないといけない
    • success/errorでいれたい
    • でもいいエラー条件が思い浮かばない
  • animate()以外のものも使えるようにしたい
  • コマンドを拡張できるようにしたい
    • デフォをコナミ仕様にして、引数で受け取るべきかな?

おねがい

例によってGitHubにあげました。
助言やらツッコミやらpull requestやらお願いします!!

GitHub tattin/konami

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5