• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「HSP」で左クリック判定がうまく判定されません)

「HSP」で左クリック判定がうまく判定されません

このQ&Aのポイント
  • マウスの左クリック判定があいまいに判定されます。
  • 原因が不明なので教えて下さい。(初心者なので。。)

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>開始したり停止したりして不安定なものになっています。 なるほど、それは、getkeyのタイミングに依るものだと思います。(実際には、HSPの作成者に聞いてみないとわかりませんが) 「左マウスがクリックされた」というのをどのタイミングで見つけているのか 2つ考えられると思います。 1)今まさにボタンが押されている状態である。 2)ボタンは押されて次の瞬間指は離されていて、現在はクリックされていない。 2の状態でプログラムにクリックされたということが伝わるなら問題ないですが、 1の様な場合、もう既に処理が終わっている(動作を切り替えている)のにまだ(ゆっくりクリックしていて)マウスが押されていて、次の処理(また切り替える、実質戻ってしまう)が行われてしまう。 のかもしれません。 多分、この1の場合なのでしょうね。 動作を確実なものにするためには、一端マウスがクリックされた(getkeyが1を返した)という状態からgetkeyがいったん0になるまで処理を再びしないようにするということが必要だと思います。

dido123
質問者

お礼

ヒントを貰い解決しました。 ありがとうございます。 *main getkey k1,2 if (k1 == 1):print "OK" wait 1 ^^^^^^^^ (ここを wait 15に変更する) goto *main stop ことでクリック判定が反復することがなくなりました。 もっと良い方法があるとは思いますがwait処理を入れる方法でいきたいと思います。

dido123
質問者

補足

またまた、ありがとうございました。(☆o☆)キラ~ン *main getkey k1,2 if (k1 == 1):print "OK" wait 1 goto *main stop 1回のクリックで6回もOKが表示されました。 ・・・どうしよう┐(´~`)┌ もう少し考えてみます。 尚、もう少しこの問題を掲載しときます。謝謝

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

あいまいに判定というのがいまひとつわからないですが、多分問題ないのではないかと思います。 処理が飛び飛びになるということだったら コンピュータは無限のスピードを持っているわけでないので、処理にはある程度時間がかかります。その時間の経過するウチにマウスが動いてしまいます。 また、マウスの発するイベント(座標を返す)も無限に短い時間で起こっているわけではありません。(マウスの解像度ともいいます。どれだけの距離を動いたことを感知するか) 勘違いしたコメントだったらすみません。

dido123
質問者

補足

早速のお返事ありがとうございます。(^-^)ゞ マウスを画面上で動かすと"□"の軌跡を表示するプログラムです。 右クリックした際は画面をクリアする処理です。 こちらは問題なく即座に反応します。 左クリックした際は"□"の軌跡を停止・開始させたいのですが開始したり停止したりして不安定なものになっています。 問題文章がわかりにくくてすいませんでした。m(。-_-。)m できればコメント下されればありがたいです。 よろしくお願いします。(^人^)、オネガイッ!

関連するQ&A