原典:
http://compasstech.com.au/TNS_Authoring/Scripting/script_tut6.html
レッスン6.3「微調整」
いつかあなたも、画面をさまざまに変化させるようなスクリプトを作るようになるでしょう。その際、ハンドヘルドの画面のリフレッシュ・レートについて少し困ることになるかもしれません。そのことについてここで述べておくのも無駄ではないでしょう。コンピューター上では完璧に動作するスクリプトなのに、ハンドヘルド上ではうまくリフレッシュされないことがあります。ハンドヘルドのほうがオペレーティング・システムがずっと単純であり、バックグラウンドで動いているシグナルもトリガーも少ないからです。一般に、見た目を変化させる函数はすべて、platform.window:invalidate()コマンドが必要です。多くのドキュメントにとって、次の2つの函数を定義するところから始めるのは決して悪いことではありません。
function on.construction()
timer.start(1/5)
end
function on.timer()
screen:invalidate()
end
どのような動作をするスクリプトであるかわかりますか? 1つ目の函数は、ページの作成と同時にタイマーをスタートさせて、0.2秒経過したらまたタイマーを0に戻して再スタートさせるという処理を繰り返す函数です((訳註)tickは「時を刻む」の意、overは繰り返しを表す副詞、5 times a secondは「1秒間に5回(の割合で)」の意)。2つめの函数は、タイマーがスタートするたびに普通の方法でウィンドウをリフレッシュする函数です。このすべてはバックグラウンドで実行されますが、想像がつくように、希望した回数だけ、画面を巧みに静かにリフレッシュしてくれます。もちろん、処理の重いスクリプトの場合は、パフォーマンスに影響の及ぶことがありますので、気を付けて使わなければなりません。
ただそれだけのことです! アイディアをあと3つ提案しましょう。
- x軸、y軸の目盛りの刻み幅をストアしておいて、それを1移動単位の代わりに使う。
- enterKeyコマンドに何か便利な機能を持たせる。完成版のサンプル・ファイルでは、ポイントを原点に戻す機能をon.enterKey()に持たせました。
- [Page Layout]>[Custom Split]の順に選択して、上側のウィンドウ((訳註)Luaウィンドウ)を可能な限り上までドラッグする。フォーカスは、ページを表示したときの最初の位置にあります。したがってフォーカスはLuaウィンドウに当たっていますので、矢印キーが機能します。もちろん、[Graph]ウィンドウをクリックし、ポイントをつかんでドラッグすることは可能です。
- ページの上半分にLuaウィンドウを表示したまま、これまでに学んだテクニックを駆使してそこに情報を表示することも可能です。たとえば座標値や、現在の象限、関連するプロパティーなどを表示してもよいでしょう。
上記のアイディアは、このレッスン用としてダウンロードできるサポート・ファイル(http://compasstech.com.au/TNS_Authoring/Scripting/script_tut6.zip)に含まれているサンプルにはすでに組み込まれています。
次のレッスン(http://compasstech.com.au/TNS_Authoring/Scripting/script_tut7.html)では、Luaで画像を扱う方法について学びます。