今回は、LED点滅プログラムを改良して、キーが押されたらすぐに終了できるようにします。そこで必要となるのが、イベントハンドラとタイマーです。
まず、イベントハンドラですが、IchigoLatteには以下のふたつのイベント発生時に、関数を呼び出すことができます。
・キー入力時
・ボタンが押された/離された
キー入力時に関数を呼び出すには、setKprs()を使います。パラメーターには、呼び出す関数名を指定します。なお、関数名は " で囲んではいけません。例えばkeyという名前の関数を呼び出すには、以下のようにします。
setKprs(key);
ボタンが押された/離された時に関数を呼び出すには、setBprs()を使います。パラメーターには呼び出す関数名を指定します。例えば、btnという名前の関数を呼び出すには以下のようにします。
setBprs(btn);
それでは、キーが押されたらLEDの点滅処理を終了するように、プログラムを書いてみましょう。IchigoLatteでプログラムを終了させるには、exit()を使います。
ここまでの知識で作成すると、以下のようになります。
function key(){
exit();
}
setKprs(key);
var i=0;
while(1){
led(i&1);
sleep(500);
i=i+1;
}
これで問題なく動きそうなものですが、実際に実行してみるとキーを押してもプログラムは終了しません。終了しないのは、while(){}を使って処理をまわした場合、イベントが発生しないからです。
イベントが発生しないので、イベントハンドラで定義した関数も呼び出されません。
これを回避するにはタイマーを使います。一般的なJavaScriptには、タイマー処理として、setTimeout()、setInterval()、requestAnimationFrame()があります。
IchigoLatteでは、setTimeout()と同様のsetTout()があります。名前が短くなっているのは、名前が7文字までという制限のためです。
setTout()は最初のパラメーターに呼び出す関数名、2番目のパラメーターには関数を呼び出すミリ秒を指定します。例えば、以下のようにするとmain関数を1秒後に呼び出します。
setTout(main,1000);
タイマーを使ってLEDを点滅させる関数を呼び出せば、イベントハンドラも呼び出されるようになります。実際のプログラムは、以下のようになります。1秒間隔でLEDが点滅を繰り返し、キーを押すとすぐにプログラムが終了します。
function key(){
exit();
}
var i=0;
function main(){
led(i&1);
setTout(main,500);
}
setKprs(key);
main();
これでようやくプログラムが完成です。次回は、入出力ポートを使ったプログラムを作成してみましょう。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
仮想通貨(暗号通貨) NHKの昼のニュースでも、ビットコインが高騰しているので注意するようにと流れるほど、メジャーになったみたい。10BTCくらい持っていれば、今頃ウハウハだったのに……。XEMでもよかったんだけど。来年の流行語はコイン長者……かな。
・InDesign CS6 JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/
・Photoshop CS6 JavaScript Reference
http://www.openspc2.org/reibun/PhotoshopCS6/ref/
・Illustrator CS6 JavaScript Reference
http://www.openspc2.org/reibun/IllustratorCS6/ref/
・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/
・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605
・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/