- 2011-06-06 (月) 19:45
- JavaScript | SmartPhone
iPhone向け(Androidも?)にゲームなどを作る際、 連続でタップをする可能性のあるインターフェース(例えばADVの会話シーンなど)に、 event.click を使ってしまうと、どうも動きがもっさりとしてサクサク進まない。
そういう時は、event.click ではなく event.touchstart/touchend を使うとサクサク進むようになる。
で、なんでそうなるのか。
iPhone の event.touchend(今回はとりあえずtouchendを使った) と event.click の違いでググってみた。
[ javascript ]iPhone clickイベント | kotaroito: エンジニアLv3日記
どうも event.click には300ms程度のディレイが予め設定されているらしい。
■追記 ——————————————————————————- 元記事のリンク先をよく読まずに書いたので、「ディレイが予め設定されているらしい」と書いたものの、 ベンチマークの結果「300msぐらいディレイがある」という感じで、 特にSafariの仕様として明記されてる様子は無かったので、誤解なきよう追記。
Handling Events | Safari Developer Libraryによると、 One-Finger Events では、 onscroll → Information bubble → Double tap → mousemove → click or No events の順にイベントの判定を行っているようなので、 上記サイトの人も書いている通り、
Double tapの判定ないし、他の処理の判定でディレイが「発生している」というのが理由な気がする。
そういうわけなので、タップの反応が遅いと感じたら、event.touchstart/touchend を使いましょう、というメモ。 個人的には touchstart よりも touchend の方が感触的にはいい感じ。
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://unolabo.boo.jp/archives/2011/06/06-iphone%e3%81%a7%e3%82%bf%e3%83%83%e3%83%97%e3%81%ae%e5%8f%8d%e5%bf%9c%e3%81%8c%e9%81%85%e3%81%84%e3%81%a8%e6%84%9f%e3%81%98%e3%81%9f%e3%82%89.html/trackback
- Listed below are links to weblogs that reference
- 【JS】iPhoneでタップの反応が遅いと感じたら from うのらぼ。