タップイベントが発生しない | エモンのブログ(スマホアプリ作成日記)

エモンのブログ(スマホアプリ作成日記)

エモンのブログです。

GooglePlayとAppStoreにアプリをリリースしてます。
「詰将棋パラダイス」4500問無料で公開。
「みんなのしょうぎ」投票型の将棋対局。いずれもソーシャルアプリなので、ソーシャルゲーム作成に興味があるかたは是非ご覧ください。

Adobe AIRを使ってスマホアプリを作ってます。半年前に起きた異変について書いておきます。
Android端末にて実機検証していて、自分は問題なくタップイベントを発生させていたのですが、
他人にプレイしてもらっているときに、どうもタップイベントが起きてないようなそんな動きをしていました。
そのときは、この人がスマホに慣れていないからなどという楽観視をしていたんですが、他の人にもテストプレイしていたところ、どうも同じような症状になるんですよね。
5人のうち3人がタップイベントをうまく発生できてませんでした。

こりゃあまずいってことで考えたのが、タップではなくタッチ開始イベントにしたらどうか。ってことです。
TAPではなくTOUCH_BEGINで判定するってことですね。
タップっていうのは、タッチスクリーンに一旦触れてから離れるまでの動作を指します。なので単純にタッチするよりもやや発生確率が下がるんですね。
PCで検証する際はマウスクリックではなく、マウスダウンにします。

PCと端末の違いを吸収するためのコードが以下です。
ドキュメントクラスでの記述
if(Multitouch.supportsTouchEvents) {
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
} else {
Multitouch.inputMode = MultitouchInputMode.NONE;
}

これはドキュメントクラスのコンストラクタに記述して必ず実行されるようにしときます。
これでAndroid端末ではタッチポイントモードになり、PCならばマウスモード?になります。

ボタンなどでの記述
if(Multitouch.supportsTouchEvents) {
this.addEventListener(TouchEvent.TOUCH_BEGIN, onBtnClick);
} else {
this.addEventListener( MouseEvent.MOUSE_DOWN, onBtnClick );
}

function onBtnClick( e:Event ):void{
//ボタン押下時処理
}

端末ではTOUCH_BEGINにします。これでPCと実機とで同じ動作になります。
この状況下で再び同じ人物にテストを頼んだところ、今度はタッチイベントがうまくいかないということはなく、大丈夫でした。
やっぱり色々な人にテストをしてもらうのがよいですなあ。

実際に作ったのが下です。


「山川悟の詰将棋」はスマートフォン用詰将棋アプリです。
Android端末(google play)⇒  iOS端末(app store)⇒
Technology By: Adobe AIR