Posted at

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

More than 5 years have passed since last update.


コナミコマンドとは










  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