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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0425
HETAREX画像ボタンの範囲指定について4解決


HETAREX

リンク

2022/4/25(Mon) 18:21:12|NO.96120

お世話になります。
画像をボタンの様に扱う処理として、
以下の様な方法を検討しています。


screen 0,640,480 boxf 100,100,200,200 repeat x = mousex y = mousey stick key , 256 if key&256 { // ↓この部分をどうにかしたい if (x>100) and (x<200) and (y>100) and (y<200) { break } } await 33 loop dialog "左クリックされた",0,"終了" end

このままでも動作はするのですが、
クリック検知後、座標の判定を行うif文の部分の見た目が
いまいちスッキリしません。
andを繰り返さずにわかりやすく書く方法があればお願いいたします。



この記事に返信する


沢渡

リンク

2022/4/25(Mon) 20:43:52|NO.96122

マクロを作るというのはどうでしょうか。

//range(p1,p2,p3,p4,p5,p6) p1がp3以上p4未満で、かつp2がp5以上p6未満なら1を返す。そうでないなら0を返す。 #define global ctype range(%1,%2,%3,%4,%5,%6) ( ((%1)>=(%3)) & ((%1)<(%4)) & ((%2)>=(%5)) & ((%2)<(%6)) ) screen 0,640,480 boxf 100,100,199,199 repeat x = mousex y = mousey stick key , 256 if key&256 { if range(x,y,100,200,100,200) { break } } await 33 loop dialog "左クリックされた",0,"終了" end



こち

リンク

2022/4/25(Mon) 20:51:24|NO.96123

こんなのどうでしょう

screen 0,640,480
boxf 100,100,200,200

repeat
title ""+x+" "+y

x = mousex/100
y = mousey/100
stick key , 256
if key&256 {
// ↓この部分をどうにかしたい
;//if (x>100) and (x<200) and (y>100) and (y<200) {
if (x=1)and(y=1){
break
}
}
await 33
loop

dialog "左クリックされた",0,"終了"

end


100でxとyを割ってあげれば
if(x=1)and(y=1)
これだけになりますが...

ご参考になれば幸いです。



雪月夜

リンク

2022/4/25(Mon) 20:54:24|NO.96124


screen 0,640,480 boxf 100,100,200,200 repeat await 33 x = mousex y = mousey stick key , 256 if key&256 { if x<=100 | x>=200:continue if y<=100 | y>=200:continue break } loop dialog "左クリックされた",0,"終了" end
andじゃなくorを使って判定する処理です。
載せといて何ですが、あまりお勧め出来る処理じゃないです。
地道にandで判定するのがベターだと思います。



HETAREX

リンク

2022/4/26(Tue) 12:14:12|NO.96134

皆さま回答を頂き有難うございます。
汎用性やボタンのサイズを変更することを考えると
沢渡さんのマクロを使用する案がすっきりまとまる気がしますので
こちらを参考にさせて頂きたいと思います。

本件はこれで解決とさせていただきます。
有難うございました。



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