HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1106
ああマウスの押下中判定3解決


ああ

リンク

2021/11/6(Sat) 13:38:13|NO.94311

If文において、
If mousex>50 & mousex<100 & mousey>50 & mousey<100 & (getkeyで指定したキーが押されている)
のように特定の範囲内にマウスがあるときにきーが押されていれば命令を実行するという感じなのですが、
これを、マウスが範囲外にあるときにキーを押した状態で、その後にその範囲内にマウスが入った場合にも実行するように動作をさせたいのですが、できますでしょうか。

色々試行錯誤したり調べてみましたができませんでしたのでご教示ください。



この記事に返信する


SYAM

リンク

2021/11/6(Sat) 14:34:38|NO.94312

if構文をrepeat-loopなどの中に記述しているなら、getkeyもループの中に入れればOKと思います
もしifがループの中でなく、getkeyの実行結果によって1回だけ呼び出されているようであれば、その構造ごと変えないといけません

以下、サンプルです。ウインドウのタイトルバーにifの判断の結果を表示します。

screen 0, 200, 200, 0 color 0, 0, 0 boxf 50, 50, 100, 100 repeat getkey m, 1 if mousex>50 & mousex<100 & mousey>50 & mousey<100 & m==1 { title "HIT" } else { title "NONE" } await 15 loop


逆に、今できていないということは
if の判断を実行するきっかけが足りていない(たとえばキーを押した瞬間しか判断してないとか)か、または、判断をするときにキーの状態を取得せずに古い情報を使ってしまっているかのどっちかではないでしょうか。

サンプルでは、判断のきっかけを「15ミリ秒ごとに判断する」として、そのたびに必ずgetkeyを実行しています)



ああ

リンク

2021/11/7(Sun) 21:54:30|NO.94331

ありがとうございます。できました。



リンク

2021/11/20(Sat) 16:06:31|NO.94418

良かったですね



ONION software Copyright 1997-2023(c) All rights reserved.