ページ 1 / 1
タブレットPCのタッチ入力が認識されない
Posted: 2011年12月02日(金) 18:03
by mert
はじめまして。
いま、タブレットPCで動かすゲームを作成しております。
環境はWindows7、DXライブラリをつかっています。
ですが、タッチでのマウスの入力がうまくいきません。
タブレットPCにマウスをつないで操作した場合は問題なく使えるのですが、ペンタッチや指で操作しようとするとほとんど反応せず、連打しているとたまに反応するくらいです。
今まで試したのは、
・SetUseDirectInputFlag(FALSE); を使用
・ペンタッチがMOUSE_INPUT_1に相当することを確かめ、書きなおす
ですが、どちらもうまくいっていません。
ほかに考えられる解決策はないでしょうか?
よろしくお願いします。
一応、マウスの動作を取得している部分のソースコードを貼っておきます。
コード:
int MouseManager::GetState()
{
int MouseState=GetMouseInput();
if(MouseState==-1) return -1;
if((MouseState & MOUSE_INPUT_1)==OFF){
state[LEFT]=OFF;
}else if(state[LEFT]==OFF){
state[LEFT]=ON;
}
return 0;
}
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月02日(金) 18:11
by mert
すみません、追記です。
ペンタッチですが、まったく認識されないのではなく、ペン先をスライドさせると認識してくれます。
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月02日(金) 21:41
by ISLe
コントロールパネルの『ペンとタッチ』(『ハードウェアとサウンド』カテゴリ)で、ペン操作のプレス アンド ホールドの設定を解除したら反応が良くなるかもしれません。
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月02日(金) 23:46
by mert
アドバイスありがとうございます。
プレス アンド ホールドとフリックを無効にしてみたのですが、依然として何度もタップしないと認識されません。
波紋エフェクトが表示されるので、クリック自体はされていると思うのですが、
マウス情報取得関数を呼ぶタイミングの問題なのでしょうか?
コード:
int Loop()
{
if(!ProcessMessage() && !mouse.GetState()) return TRUE;
return FALSE;
}
void foo()
{
while(条件 && Loop()){
処理
:
}
}
このような感じで、毎回ループのたびには呼び出しているのですが……。
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月03日(土) 00:22
by ISLe
タブレットPCじゃなくてペンタブレットで確認してますが、こちらではプレス アンド ホールドの設定で変化があります。
#フリックは影響なかったです。
ちゃんと無効になってますか?
プレス アンド ホールドの設定のダイアログでOKボタン押したあと、ペンとタッチのダイアログでもOKボタン押さないと反映されませんけど。
波紋は、タップのエフェクトなので、タッチとは無関係です。
こちらではタブレットにペンを付けた瞬間に反応しますし付けているあいだ反応し続けます。
波紋はペンをタブレットから離したときに表示されます。
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月03日(土) 12:54
by mert
どうやらDXライブラリではタップがイベントとして認識されないようです。
コールバック関数を追加したところ、タップを認識するようになりました。
ご助言ありがとうございました。
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月03日(土) 18:31
by ISLe
タッチじゃなかったんですね。
タッチした瞬間では目的に合わないのでしょうね。
スレタイは「タップが認識されない」と書いて欲しかったですね。
Re: タブレットPCのタッチ入力が認識されない
Posted: 2011年12月04日(日) 09:41
by mert
すみません、タブレットPCを使うのが初めてで、タッチとタップの違いがよく分かっていませんでした。
「クリック」の動作を、指やペンでも検出したかったのですが、確かにタッチという言葉はふさわしくありませんでしたね。
以後、言葉には気をつけようと思います。ご指摘ありがとうございました。