トップページ > 記事閲覧
タッチ判定が残る
名前:BayLeaf 日時: 2018/04/16 20:43

いつもお世話になっております。 Android で試している時に気付きましたのでご報告させていただきます。 タッチを1か所タッチし続けて固定している間、 2か所目以降のタッチが残り続けていることがあります。 恐らくバグかなと思いますのでご確認をお願いします。 発生条件は1か所目を座標を移動せずタッチし続け、 2か所目以降は座標が移動する前にタッチを離すと再現できるかと思います。 for (int i = 0; i<GetTouchInputNum(); i++) { GetTouchInput(i, &x, &y, &ID, NULL); DrawFormatString(0, i * 32, GetColor(255,255,255), "タッチ情報:%3d,%3d,%d,%d", x, y, ID, NULL); }
メンテ

Page: 1 |

Re: タッチ判定が残る ( No.1 )
名前:管理人 日時:2018/04/17 01:00

すみません、現象を再現することができませんでした > 発生条件は1か所目を座標を移動せずタッチし続け、 > 2か所目以降は座標が移動する前にタッチを離すと再現できるかと思います。 とのことですが、『座標が移動する前にタッチを離す』ということは、1ヶ所目も、 2ヶ所目以降もタッチの座標は一切動かさずに押したり離したりするということでしょうか?
メンテ
Re: タッチ判定が残る ( No.2 )
名前:BayLeaf 日時:2018/04/17 02:57

>> 発生条件は1か所目を座標を移動せずタッチし続け、 >> 2か所目以降は座標が移動する前にタッチを離すと再現できるかと思います。 > > とのことですが、『座標が移動する前にタッチを離す』ということは、1ヶ所目も、 > 2ヶ所目以降もタッチの座標は一切動かさずに押したり離したりするということでしょうか? 説明が足りなかったようでしたのでもう少し詳しい状況を書きます。(実機で行なっています) 1か所目はずっと同じ座標を固定してタッチし続けている状況となります。 上記の状態で2か所目以降のタッチに関して、座標が移動しないくらいのほんの少しのタッチを繰り返すと 離しているのに2か所目以降の処理や描画がされてしまうことがあります。 なお、上記の処理中にいずれかのタッチを1ドットでも動かすとタッチしていない箇所が解除されるようでした。 コードミスの可能性もあるので、もう少し検証してみます。
メンテ
Re: タッチ判定が残る ( No.3 )
名前:管理人 日時:2018/04/18 00:32

詳しいご説明ありがとうございます BayLeafさんが載せてくださったコードを元に以下のようなテストプログラムを組んでみたのですが、 現象を再現することはできませんでした #include "DxLib.h" // WinMain関数 int android_main( void ) { int x, y, ID ; // DXライブラリ初期化処理 if( DxLib_Init() == -1 ) return -1; // 描画先画面を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; // タッチしている座標をすべて表示する for (int i = 0; i<GetTouchInputNum(); i++) { GetTouchInput(i, &x, &y, &ID, NULL); DrawFormatString(0, i * 32, GetColor(255,255,255), "タッチ情報:%3d,%3d,%d,%d", x, y, ID, NULL); } ScreenFlip() ; } // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; } よろしければ BayLeafさんの環境では上記のプログラムでも『タッチを離してもタッチしていることになってしまう』現象が 発生するかお試しいただけないでしょうか? m(_ _)m
メンテ
Re: タッチ判定が残る ( No.4 )
名前:BayLeaf 日時:2018/04/18 01:41

> BayLeafさんが載せてくださったコードを元に以下のようなテストプログラムを組んでみたのですが、 > 現象を再現することはできませんでした 再現できませんでしたか… 私も試したのですが、管理人さんの示してくださったプログラムでも再現できました。 やり方の問題、それとも端末の問題だったりするのでしょうか? かなり限定的な条件で伝わっていない可能性もあるので、 新しく分かったことを含めてもう一回整理してみます。 SetGraphMode の値を100ずつくらいに小さくすると 座標の関係で再現しやすくなるのでそちらもお試しください。 ・1か所以上タッチし続けている ・タッチし続けている指は離さず、2か所目をタッチする ・1か所目も2か所目もタッチの座標は移動しない(1ドットでも動かすと正常になる) ・2か所目のみを離す(1か所目は固定しているので) ・いずれかのタッチを1ドット以上移動させると正常な動作になる ・現象が必ず発生するとは限らない(5,6回のタッチで1回程度再現可能) ・IDの優先度は関係ない(通常起こり得るのは ID=0 を固定する場合だが、ID=1 を固定することでも再現可能) なお、端末のタッチできる最大数は5(ID=4)です。 関係ないと思いますが、この最大数は端末によって異なるのでしょうか? もし最大数が5未満の端末がありましたら教えていただけますでしょうか。 あった場合、5で分岐するプログラムが個人的にあるので…。
メンテ
Re: タッチ判定が残る ( No.5 )
名前:管理人 日時:2018/04/19 01:29

> かなり限定的な条件で伝わっていない可能性もあるので、 > 新しく分かったことを含めてもう一回整理してみます。 > SetGraphMode の値を100ずつくらいに小さくすると > 座標の関係で再現しやすくなるのでそちらもお試しください。 詳細な再現方法を教えていただきありがとうございます ただ、やはり手元の実機では再現することができませんでした > 私も試したのですが、管理人さんの示してくださったプログラムでも再現できました。 > やり方の問題、それとも端末の問題だったりするのでしょうか? 端末に依存した現象の可能性はあると思います > なお、端末のタッチできる最大数は5(ID=4)です。 > 関係ないと思いますが、この最大数は端末によって異なるのでしょうか? 異なると思います、手元で試した端末( F-02H )は10個でも判定されました ( 11個以上判定するのかは指の数が足りないので確認していません・・・ ) > もし最大数が5未満の端末がありましたら教えていただけますでしょうか。 > あった場合、5で分岐するプログラムが個人的にあるので…。 マルチタッチに対応し始めたばかりの頃の端末では 5未満もあったと思いますが、 具体的にどの端末が 5未満かはわかりません
メンテ
Re: タッチ判定が残る ( No.6 )
名前:BayLeaf 日時:2018/04/20 21:48

お試しいただきありがとうございます。 ただ、再現ができなかったということなので 取り敢えず現状のタッチした際に挙動に関しては 位置を固定しないようなプログラムにして解決することにします。 > 異なると思います、手元で試した端末( F-02H )は10個でも判定されました そうなんですね。 もしタッチの最大数を取得するような関数があれば 指の数を気にせず確認できると思うのですが、実装は可能でしょうか?
メンテ
Re: タッチ判定が残る ( No.7 )
名前:管理人 日時:2018/04/20 23:46

> もしタッチの最大数を取得するような関数があれば > 指の数を気にせず確認できると思うのですが、実装は可能でしょうか? 最大数を取得するための API はありそうなものですが、調べてみた限りでは最大数を取得する方法が 無いようなので実装はできません・・・
メンテ
Re: タッチ判定が残る ( No.8 )
名前:BayLeaf(解決) 日時:2018/04/21 08:41

> 最大数を取得するための API はありそうなものですが、調べてみた限りでは最大数を取得する方法が > 無いようなので実装はできません・・・ わかりました。 できないのでしたら仕方がないと思います。 回避方法がないわけではないので一応解決にしておきます。 何か進捗がありましたらまた書き込みに来ますね。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存