第6回 Palmに動作を伝えよう 〜 イベントのお話 〜「6.ジョグダイヤル、そして注意事項」
|
|
6−6 ジョグダイヤル、そして注意事項
さて、タップ、ボタンとくれば、残るはジョグダイヤルです。 現行では、SONYのCLIEにしか搭載されていない特殊な入力デバイスで、くるくる回るダイヤルが特徴ですが、NS Basicでは、バージョン1.09から正式に対応しています。 これは、タップやボタン類のイベントと同じように、GetEventType()の戻り値が、NsbJogDialであれば、ジョグダイヤルのイベントです。 ジョグダイヤルはボタン類と同様に、GetKey()を使い、その戻り値は、次のようになっています。
その他の処理は、基本的にボタン類と同じなので、特に詳細の説明は行いません。 ただし、注意すべき点としてボタン類であれば各ボタンが独立しているので問題にはならなかった点ですが、ジョグダイヤルであれば「押した」のと「押しながら回した」は、どちらも同時に発生し得る種類のイベントで、実際に発生します。 つまり、1つの装置で複数の動きを実現しているため、ちょっとした工夫が必要です。 また、これらの動作は、同時に使っているアプリの組み合わせによっても異なるようで、ここでの説明は省略します。 このあたりの情報や使用方法の詳細は、厳達さんのサイト「CliCliClie」(http://www.page.sannet.ne.jp/lwol/)でとても親切に紹介されています。NS Basicでジョグダイヤル対応のアプリを作る場合は、ここを参考にしてください。 さて、タップ、ボタン、ジョグ、といった特殊なイベント類について一通り紹介しましたが、いかがでしょうか? これらのイベントを処理すれば、Palmデバイスらしいアプリを作ることができますね。 しかし、イベントには注意すべき点があります。 次のようなサンプルを見てみましょう。
[events]
Beep
[But1005]
Sound 880,200,1
これは、画面にボタンを貼っただけのプログラムですが、イベントが発生すると「Beep」コマンドによって音がでます。一方、ボタン1005をタップした時は「Sound」コマンドで音が出ます。 Soundコマンドは、 Sound 周波数(Hz),長さ(ms),振幅,処理 という書式で、周波数と長さを使って音を出します。振幅は通常1か2を設定し、処理に「nsbWait」とすると音が止まるまで処理はSoundコマンドで止まっており、「nsbNoWait」とすると音の終わりを待たずに処理が次に移ります。省略時は「nsbNoWait」です。 さて、プログラムの方に戻りましょう。 このプログラムでは、ボタンをタップするとSoundによる音が、それ以外のところをタップするとBeepによる音が2回鳴ると思われます。 Beepが2回なのは、PenDownとPenUpの2つのイベントが発生するからですね。 では、実際はどうでしょうか? 実は、それ以外のところをタップしたBeep音が2つ、は正常に動作しますが、ボタンをタップすると3回の音が鳴ってしまいます。 それも、Beep → Sound → Beep、の順番ですね。 ![]() つまり、NS Basicでは、ボタンと言うオブジェクトが貼ってあっても、それをタップする時には、同時に画面へのPenDownとPenUpのイベントが発生してしまうわけです。 基本的にオブジェクトは1つの独立した部品で、それがフォームという画面のオブジェクト上に配置されているイメージのように思われますが、実際は、フォームのオブジェクトは最前面にあるようです。 ちなみに、Visual BASICではボタンを貼ったら、そちらが優先になりますが、NS Basicでは、ボタンを始め、すべてのオブジェクトが同じようにPenDownとPenupを伴ってイベントを発生します。 この辺りは、特殊な仕様ですが、注意すべき点なので覚えておいてください。 これでイベントとその注意点について説明しましたので、Palmデバイス上の目に見える範囲のボタン類はすべて使えることになりますね。 注意するのは、ボタン類を使う時の SetEventHandled、と言うコマンドの使い方と、タップイベントで常にPenDownとPenUpが発生している点です。 これらの点に注意しながらアプリを作ってみてください。 尚、ジョグダイヤルの部分で大変お世話になったCliCliClieの厳達さんに、この場を借りてお礼申し上げます。ありがとうございました。 |
|||||||||||||||||
第6回 Palmに動作を伝えよう 〜 イベントのお話 〜「6.ジョグダイヤル、そして注意事項」
|