Android携帯ゲームを作って世界に配信してみよう(2) ―― ゲームの基本構造とタップやフリックの処理を学ぶ

山田 元康

tag: 組み込み

エレキ系DIY 2011年9月29日

●タッチ入力のイベント処理はループ内のスレッド処理に委ねる

 ユーザが画面にタッチすると,View#onTouchEventが呼び出されます.ここでのポイントは,onTouchEvent内ではイベント処理をせずにイベントをキューに蓄積して,ゲーム・ループ内の処理で必要に応じて取り出すようにすることです(リスト4の(a)).

 

リスト4 タッチ入力が発生したときの処理(GameView.javaより抜粋)

 

●指の移動距離でタッチとフリックを見分ける

 ゲーム・ループ内でScene#processを呼び出し(リスト3の(i)),このメソッドにおいて,onTouchEventでキューに登録したイベントをキューから取り出します(リスト5の(a)).キュー内に複数ある場合は,すべてのイベントを一つずつ取り出します.

 

リスト5 タッチ入力イベントを取り出す(GameScene.javaより抜粋)

 

 MotionEvent#getActionで,ユーザが引き起こした操作の種別を取得します(リスト5の(b)).ユーザが画面に指を触れた瞬間にACTION_DOWNイベントが発生するので,後でタップかフリックかを判定するために,タッチした瞬間のタッチした位置を保存しておきます(リスト5の(c)).

 また,ユーザが画面から指を離すとACTION_UPイベントが発生するので,ACTION_DOWNのタイミングで記録した最初に指が触れてタッチした瞬間の位置と,現在タッチしている位置の差分をとり,タッチ中の指の移動距離をとります(リスト5の(d)).移動が一定の距離内であればタップとみなし,一定以上であればフリックとみなします(リスト5の(e)).

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日