« ページの合成 -2- | トップページ | タッチパネルはよく解らん -2- »

2012年5月14日 (月)

タッチパネルはよく解らん

タブレットは持ってないので知り合いのタブレットで FlatTable の動作確認したところ、球をドラッグ出来ないことが判明しました。タッチパネルでは mousedownmousemove の代わりに touchstarttouchmove を使わないといけないことは分かっているので、そうしているのですが、まだ何か問題が有るようです。

そこで、家に帰ってから、PCのタッチパネル機能を使ってあれこれ動作確認してみました。

因みに、球のドラッグは次のイベント・シーケンスに従って実行されます。

touchstart --> touchmove --> touchend
              ↑_______↓

次のような現象が確認できました。

  • タッチしてすぐに指を動かすとイベント(touchstart, touchmove)は発生しない
  • タッチしてすぐに離すとイベント(click)が発生する
  • タッチして1秒程度待つとイベント(touchstart)が発生し、更に指を動かすとイベント(touchmove)が発生する
画面スクロールの時は、タッチしてすぐに指を動かしても画面が反応するので、上記で反応しないというのは、アプリケーションにはイベントが届かないということなのでしょう。それは、システムが click を検出するために touchstarttouchmove のイベント通知を鈍らせているのでしょうか?

もう1つ、次のことも確認できました。

FlatTable では、次のコードでタッチパネルの検出を行っています(有効性の確認は出来ていません)。

// タッチパネルの検出
var fTouchPnl = true;
var mouseDown = "touchstart";
var mouseMove = "touchmove";
var mouseUp = "touchend";

addEvent(flattable, "mouseover", yesMouse);

function yesMouse(){
    fTouchPnl = false;
    mouseDown = "mousedown";
    mouseMove = "mousemove";
    mouseUp = "mouseup";
    removeEvent(flattable, "mouseover", yesMouse);
}
タッチパネルの検出と言うよりも、マウスの検出と言うべきでしょうか。このコードは、「もしマウスが有ればマウス用のイベントを検出し、マウスが無ければタッチパネル用のイベントを検出せよ」ということです。

このコードで、yesMouse() の最初の箇所に alert() を置いてみたところ、次のことが分かりました。

  • 開始してすぐに mouse を画面に乗せた時、yesMouse() は1回だけ呼ばれる
  • 開始してすぐに(mouse は乗せずに)画面を touch した時、yesMouse() は3回呼ばれる
訳解りません。

« ページの合成 -2- | トップページ | タッチパネルはよく解らん -2- »

ビリヤードの配置図ソフト」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/584699/54705378

この記事へのトラックバック一覧です: タッチパネルはよく解らん:

« ページの合成 -2- | トップページ | タッチパネルはよく解らん -2- »