コナミコマンドとは
- ↑
- ↑
- ↓
- ↓
- ←
- →
- ←
- →
- B
- 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やらお願いします!!