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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
1213
ねこ。stickでタップをした際に取得する座標がずれる。3解決


ねこ。

リンク

2022/12/13(Tue) 18:40:24|NO.97530

はじめまして、最近HSPを始めたものです。

質問になりますが、stick及びmousex(ey)で入力の始点と終点の座標を取得して、
スワイプ操作のような処理を入れているのですが、
始点の座標がスワイプ方向にずれてしまいます。
(もしかしたらWindowsタブレットのタップ操作の弊害かもしれませんが…
 WebGLでは正常に動きます。)
原因等わかる方がいましたら教えていただけると助かります。


dim key,20 *nya redraw 0 cls mes key(12) pos ginfo_sx/2,ginfo_sy/2 mes "□" redraw 1 repeat if mousex!0 : key(14)=mousex if mousey!0 : key(15)=mousey if key(9)=256 { stick key(9),256 if key(9)=0 : break } else { stick key(9) if key(9)=256 : key(12)=mousex : key(13)=mousey : wait 1 : break } wait 1 loop goto *nya

※制作中のものから引き抜いてテストしたものなので、変数が見にくいです。すみません。


余談ですが現在こういうものをつくっています。
hsp3dishスマホ用キーボード
https://plicy.net/GamePlay/144898



この記事に返信する


しまくろねこ(本物)

リンク

2022/12/13(Tue) 21:08:29|NO.97533

こんにちは。
よくわかりませんが、始点と終点の座標を取得したいということでしょうか?
宣伝になってしまいますが、mod_smart.asというモジュールで下記のソースでタップの始点と終点の座標を取得できます。

また、stickやgetkeyはWindowsタブレットPCでは画面をダブルタッチしないとクリックとみなされません。

やりたいことと違っていたらごめんなさい。


#include "hsp3dish.as" #include "mod_smart.as" #const TAP_DETOUCH 0 ; タップされてない #const TAP_TOUCH 1 ; タップされている #const TAP_TOUCH_FINISH 2 ; タップ終了 setcls CLSMODE_SOLID, $000000 ; redraw 0 で画面を黒でクリアする tap_flg = 0 ; タップ座標を連続で取得しないためのフラグ start_tap_x = 0 ; タップ開始X座標 start_tap_y = 0 ; タップ開始Y座標 end_tap_x = 0 ; タップ終了X座標 end_tap_y = 0 ; タップ終了Y座標 smart_init ; mod_smart.asの初期化 smart_add : act_swipe = stat ; タップ等の操作を取得するためのアクションを追加 color 255, 255, 255 repeat redraw 0 re_tap = smart_tap(act_swipe, 0, 0, ginfo_sx, ginfo_sy, -1) ; タップを取得 switch re_tap case TAP_DETOUCH ; タップされてない swbreak case TAP_TOUCH ; タップされている if tap_flg == 0 { tap_flg = 1 start_tap_x = smart_getx() ; タップされているX座標を開始X座標として取得 start_tap_y = smart_gety() ; タップされているY座標を開始Y座標として取得 } swbreak case TAP_TOUCH_FINISH ; タップ終了 tap_flg = 0 end_tap_x = smart_getx() ; タップされているX座標を終了X座標として取得 end_tap_y = smart_gety() ; タップされているY座標を終了Y座標として取得 swbreak swend pos 0, 0 mes "タップ開始X座標:" + str(start_tap_x) mes "タップ開始Y座標:" + str(start_tap_y) mes "タップ終了X座標:" + str(end_tap_x) mes "タップ終了Y座標:" + str(end_tap_y) redraw 1 await 16 loop



ねこ。

リンク

2022/12/13(Tue) 22:07:46|NO.97534

ご回答ありがとうございます。
動作を調べてみたところ、タッチ一回でスライド入力をすると入力が遅れるみたいですね。
ダブルタッチで試したところ正常に動きました。
プログラム上の不備ではなくWindowsタブレットの仕様上の問題だったようです。
お騒がせしてすみません。



GENKI

リンク

2022/12/13(Tue) 23:02:33|NO.97536

メインループ内でcls使っちゃうとmouosex,mouoseyが期待通りの値を返さない方の話かと思ったんですが…違ったか。

*main ;redraw 1 : await 16 : redraw 0 : color 255,255,255 : boxf : color redraw 1 wait 1 redraw 0 mx = mousex my = mousey cls pos 0,0 mes "" + mx +", "+ my goto *main



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