コナミコマンド.js2009-02-10
あの懐かしい「上上下下…」の響き。伝説のコナミコマンドを、あなたのウェブページに簡単に導入する事が出来るスクリプトです。
Google Reader がコナミコマンドに対応しているというニュースを読んだらいても立ってもいられなくなり、条件反射のように作成してしまいました。
さて、とりあえずこのページ自体がサンプルになっているので、コナミコマンドを入力してみて下さい。
スクリプトの作成時間よりこの説明ページの作成時間の方が長かった事は秘密だ。
動作条件
下記のブラウザで動作確認しています。他のブラウザでも動くかも知れませんが、分かりません。IE6、IE7、Firefox1、Firefox1.5、Firefox2.0、Safari3、Opera9
日本語入力が ON になっていたり、ウィンドウ (もしくはタブ) にフォーカスがない時は無効です。
なお、例によって ここで公開されているスクリプトは保証無しですが、著作権も放棄しています。
好きなだけ持って行って好きなだけ改造して下さい。
導入方法 (基本)
上記の Download リンクから取得したkonamicommand.js ファイルを読み込むと、konamicommand 関数が利用可能になるので、コナミコマンド成功時に実行したい関数を指定するだけです。下記のサンプルのようなコードを書くだけで、コナミコマンド成功時に指定した関数が実行されます。
<script type="text/javascript" src="konamicommand.js"></script>
<script type="text/javascript">
<!--
function powerUp() {
alert('パワーアップ');
}
konamicommand(powerUp);
//-->
</script>
上記のソースは以下のように書いても同じ意味になります。関数を 1 カ所でしか使わない場合はこの方が見やすいかも知れません。<script type="text/javascript" src="konamicommand.js"></script>
<script type="text/javascript">
<!--
konamicommand(function() {
alert('パワーアップ');
});
//-->
</script>
トグルの実装 (拡張)
コナミコマンドを繰り返し実行した際に、動作を変化させる事も出来ます。実行時関数には、コナミコマンド実行回数のカウンタが渡されるため、そのカウンタで判別します。
カウンタは 0 から始まる整数なので、たとえばトグルは以下のように実装できます。
function powerUp(count) {
if (count % 2 == 0) {
// 偶数の時のみ実行
alert('パワーアップ');
} else {
// 奇数の時のみ実行
alert('元に戻す');
}
}
konamicommand(powerUp);
凝った作りにするのなら、以下のような事も可能です。konamicommand(function(count) {
switch (count) {
case 0 : alert('スピーダップ'); break;
case 1 : alert('ミッソー'); break;
case 2 : alert('ダボゥ'); break;
case 3 : alert('ウェイサー'); break;
case 4 : alert('アップシュン'); break;
case 5 : alert('フォースフィー'); break;
default : alert('自爆');
}
});
別のコマンドを実行 (上級)
konamicommand 関数の第二引数に、オプションとしてコマンド文字列を渡す事が出来ます。コマンド文字列とは、キーコードの値を「
|」で区切った文字列で、任意のコマンドを指定する事が出来ます。コマンド文字列には最初と最後にも「
|」が含まれている事に注意して下さい。この構文を使えば、隠しコマンドが作り放題です。
konamicommand(実行時関数, 'コマンド文字列');デフォルトである「
上上下下左右左右BA」のコマンド文字列は "|38|38|40|40|37|39|37|39|66|65|" になっています。例えば、「
L」の文字コードは "76" で、「R」の文字コードは "82" なので、「上上下下LRLRBA」 は次のように実装できます。konamicommand(function() {
alert('Ⅲ');
}, '|38|38|40|40|76|82|76|82|66|65|');
konamicommand 関数は、複数回実行しても全て有効になるため、1つのページに複数のコマンドを仕掛ける事も可能です。このページ自体にも、通常のコナミコマンド以外の隠しコマンドが…