« 出張先のコンビニで | トップページ | そうそう、DateBk6最新版入れました^^ »

2006年12月20日 (水)

一歩進んで。。。

年末年始企画アプリネタです^^;

先日の、T3での5wayイベントの取得、いなあもさんのコメントに従ってやってみました。ところが、うまく動きません。調べてみると、どうやら5wayって、ボタンを放したときにもイベントが発生しているんですね。というわけで、同じくいなあもさんのこの記事を参考に、5wayの場合はボタンを放したときに動作するようなコードを書いてみて、何とか無事動くようになりました。ありがとうございます^^

が、ここで別の問題を発見。今回のアプリでは5wayボタンを押したときに、ちょっとしたアニメーション動作をするようにしているのですが、5wayを連打したときに、次々とその動作が起こってしまいます。どうやらボタンイベントがバッファに入っているようです。でも、バッファのクリアの仕方が分かりません。仕事に戻らないといけないので、今日はここまで^^;。また明日悩んでみます。では(^_^)/~~~

|

« 出張先のコンビニで | トップページ | そうそう、DateBk6最新版入れました^^ »

コメント

バッファのイベントクリアって、はまるんですよね。
バッファクリアで一番確実なのは、ボタンイベントでNextFormを実行する場合。
他のFormに処理が移れば、バッファは確実にクリアされますから。
ただ今回の件は、それでは解決になりませんね。
一応、PalmOSでは古来から、EvtFlushPenQueueとか
EvtFlushKeyQueueというAPIがあります。
一応、これらのAPIは名前から見るとイベントキューをクリアしてくれるものだと(僕が勝手に)思っています。
NS Basicからでも問題なく呼べるので僕がイベントバッファ蓄積問題にぶつかったときには必ず試しているのですが、どうも使い方が悪いのか、あまり期待どおりの結果を得られていません。
そんな情けないコメントで申し訳ないのですが、試してみるなら、クリアをかけてみたい場所に以下のコードを追加してみてはいかがですかな?

SysTrapSub 293,0'-- EvtFlushPenQueue
SysTrapSub 300,0'-- EvtFlushKeyQueue

投稿: いなあも | 2006年12月21日 (木) 12時11分

今思いついたんですが、NextFormでフォームを移ればクリアされるなら、イベントコードの最後で

NextForm"現在のフォーム"

みたいなコードを実行するなんて泥臭い方法で解決できないかな?
BeforeコードやAfterコードでフォームを初期化しないような工夫も必要かもしれないですけどね。

スマートな方法は…残念ながら思いつきません。
スミマセン。

投稿: いなあも | 2006年12月21日 (木) 12時15分

>いなあもさん
コメントありがとうございます。APIを呼ぶ方法、早速試してみたところ、ばっちりです^^。ありがとうございます。
ちなみにイベントクリアを挿入した箇所は、アニメーション実行部分の後です。アニメーション実行中にボタンが押されると、そのイベントがバッファに入っていたようです。

投稿: MA-CY | 2006年12月21日 (木) 12時59分

おお、APIが効いてくれたようで良かったです。
僕が使う場合、どうも8割くらいの確率で上手く作用していなかった経験があるので(多分使い方が悪い)自信は無かったのですが…。
とりあえず、お役に立てたようで一安心。

投稿: いなあも | 2006年12月22日 (金) 19時26分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/140067/13139090

この記事へのトラックバック一覧です: 一歩進んで。。。:

» [Palm]イベント処理 [いなあもノート Z]
MA-CYさんが新作アプリではまってます。 ボタンを押した際に画面でアニメーションを表示するというものらしいですが、ボタン連打するとイベントがバッファにたまってしまい、暫くアニメーションを繰り返すらしい。 イベントのバッファ問題って、僕も時々はまります。 僕の場... [続きを読む]

受信: 2006年12月21日 (木) 12時38分

« 出張先のコンビニで | トップページ | そうそう、DateBk6最新版入れました^^ »