【ハウツー】
iPhoneゲーム自作工房5 - Googleマップ回転ゲームの作成
1 ジェスチャーの利用
2008/08/06
iPhone + Safariによるジェスチャー処理
iPhoneのSafariにはタッチされた時のイベントを取得することができます。このタッチ関係のイベントを使ってピンチイン/アウトや回転操作を行うためのプログラムを書くこともできます。が、実際にそのようなコードをJavaScriptで書くのは手間です。幸いiPhoneのSafariには、そのような処理(ジェスチャー)を検知するための仕組みとイベントプロパティが用意されています。今回は、回転させるジェスチャーを使って、ちょっとした回転ゲームを作成してみます。
今回はシンプルなゲームで指定した回転角度まで画像を回転させるだけのものです。指定した回転角度まで回転させるタイムを競います。普通の画像を回転させても良いのですが、ここではGoogleマップを回転させてみます。
![]() |
正確に地図を回転させるゲーム |
ジェスチャーイベント
Safariのジェスチャーに関するイベントは以下のものがあります。
| gesturestart | ジェスチャー開始 |
|---|---|
| gesturechange | ジェスチャー中 |
| gestureend | ジェスチャー終了 |
今回の場合、回転させるジェスチャーを取得しますが、使用するのはgesturechangeとgestureendイベントです。gesturechangeにより現在の回転角度を表示します(遅延描画が行われるためかリアルタイムに角度が表示されないことがあります)。
画像をいったん回転させた後、指を離してしまうとジェスチャーが終わってしまいます。そこでgestureendにより画像の回転角度を変数に保存しておきます。
あと、もう1つイベント処理を追加しておきます。これまではSafariの画面をドラッグまたはフリック(画面を指で払う)すると、Webページの画面がスクロールしてしまいました。このフリックによるスクロールを禁止するにはtouchmoveイベントを検知してデフォルトのイベントを処理しないようにします。「event.preventDefault()」とするとデフォルトのイベントが実行されなくなります。
コード01
window.addEventListener("load", function(){
document.addEventListener("gesturechange", checkRotate, false);
document.addEventListener("gestureend", saveRotate, false);
document.addEventListener("touchmove", function(){ event.preventDefault(); }, false);
});
ヘッドライン
- 【レポート】Adobe CS5のiPhoneアプリ書き出し機能はライセンス違反!? - 元Adobe技術者が指摘[10:00 3/22]アップル
- 【レポート】今週の秋葉原情報 - TWO TOPがリニューアルオープン、ついに2TB HDDの1万円割れも[01:07 3/22]自作
- 【レポート】5分でわかる今週のPC注目記事 - 3月14日〜3月20日[18:05 3/21]
- すべての旧来メディアはiPadに集まる - News Corpのマードック氏の予言[17:51 3/20]アップル
- Apple訴訟を受け、HTCがGoogleと共同で反訴を計画か - NYT[17:39 3/20]アップル
- iPad発売を前に、Appleが事業者とのコンテンツ提供交渉で苦戦 - WSJ[11:27 3/20]アップル
- 一度の再起動でOSやデータを完全保護「HD革命/WinProtector Ver.3」[21:44 3/19]ユーティリティ活用術
- ASUS、防塵ファン装備のRadeon HD 5670カード「EAH5670/DI/512MD5」[21:23 3/19]自作
- MSI、高性能クーラー「Twin Frozr II」装備のRadeon HD 5830カード[21:12 3/19]自作
- 【コラム】3Dグラフィックス・マニアックス 第91回 人工知性でコンテンツを生成するプロシージャル技術(15)[20:48 3/19]自作









