タッチ入力の基礎

Flash Player 10.1 以降、Adobe AIR 2 以降

タッチ入力をサポートしている環境で Flash Platform が実行されている場合、InteractiveObject のインスタンスは、タッチイベントを監視してハンドラーを呼び出すことができます。一般に、ActionScript では、他のイベントと同じ方法でタッチ、マルチタッチおよびジェスチャの各イベントを処理します(ActionScript によるイベント処理の基本情報については、 イベント処理 を参照してください)。

ただし、Flash ランタイムでタッチまたはジェスチャを解釈するには、タッチ入力またはマルチタッチ入力をサポートしているハードウェアとソフトウェア環境でランタイムが実行されている必要があります。様々なタッチスクリーンの種類については、 入力タイプの検出 の比較表を参照してください。また、ランタイムがブラウザーなどのコンテナアプリケーション内で実行されている場合は、そのコンテナからランタイムに入力が渡されます。現在のハードウェアとオペレーティングシステム環境でマルチタッチがサポートされていても、Flash ランタイムが組み込まれているブラウザーが入力を解釈し、ランタイムに入力を渡さない場合があります。または、単に入力を完全に無視する場合があります。

次の図は、ユーザーからランタイムへの入力のフローを示しています。

フルサイズのグラフィックを表示
ユーザーから Flash Platform ランタイムへの入力のフロー

タッチアプリケーション開発用 ActionScript API には、ランタイム環境でタッチ入力またはマルチタッチ入力がサポートされているかどうかを判断するためのクラス、メソッドおよびプロパティが用意されています。タッチ入力のサポートを判断する際に使用する API は、タッチイベント処理の「検出 API」です。

重要な概念と用語

次の参照リストに、タッチイベント処理のアプリケーションを記述する上で重要な用語を示します。

検出 API
ランタイム環境でタッチイベントや様々な入力モードがサポートされているかどうかをテストするためのメソッドおよびプロパティです。

タッチイベント
タッチ対応デバイス上で単一の接触点を使用して実行される入力操作です。

タッチポイント
1 回のタッチイベントの接触点です。デバイスがジェスチャ入力をサポートしていない場合でも、複数の同時タッチポイントをサポートしている場合があります。

タッチシーケンス
複数のイベントの連続で、1 回のタッチの存続期間を表します。これらのイベントには、開始、移動(必要に応じて)および終了が含まれます。

マルチタッチイベント
タッチ対応デバイス上で複数の接触点(2 本以上の指など)を使用して実行される入力操作です。

ジェスチャイベント
タッチ対応デバイス上で実行される入力操作で、複雑な動きをトレースします。例えば、2 本の指で画面をタッチし、イメージした円の周囲をなぞるよう両方の指を同時に動かして、回転の動作を示すなどのジェスチャがあります。

フェーズ
イベントフローにおける異なる時間点(開始や終了など)です。

スタイラス
タッチ対応スクリーンを操作するための道具です。スタイラスを使用すると、人間の指よりも精密な操作が行えます。一部のデバイスは、特殊なスタイラスを使用した入力のみを認識します。スタイラス入力を認識するデバイスは、複数の接触点への同時入力や指による接触を認識しない場合があります。

押しながらタップ
ユーザーがタッチ対応デバイスを指で押しながら、別の指またはポインティングデバイスでタップするという、特殊なマルチタッチ入力のジェスチャです。通常、このジェスチャは、マルチタッチアプリケーションでマウスの右クリック操作の代わりに使用します。

タッチ入力の API 構造

ActionScript のタッチ入力 API は、タッチ入力処理が Flash ランタイムのハードウェアとソフトウェア環境に依存するという事実に対応した設計になっています。タッチ入力 API では、主に、タッチアプリケーション開発の 3 つのニーズ(検出、イベントおよびフェーズ)に対応しています。これらの API を組み合わせて使用すれば、アプリケーションの開発時にターゲットデバイスが不明でも、予測可能で快適な操作性をユーザーに提供できます。

検出

検出 API は、実行時にハードウェアとソフトウェア環境をテストする機能を提供します。ランタイムで設定した値に基づき、Flash ランタイムが現在のコンテキストでタッチ入力を使用できるかどうかを判断します。また、検出のプロパティおよびメソッドのコレクションを使用して、アプリケーションがマウスイベントに反応するように設定します(環境によってサポートされていないタッチ入力がある場合に備えて、タッチイベントには設定しません)。詳しくは、 タッチのサポートの検出 を参照してください。

イベント

ActionScript では、他のイベント処理と同様に、イベントリスナーとイベントハンドラーを使用してタッチ入力イベントを管理します。ただし、タッチ入力イベント処理では、次の点も考慮する必要があります。
  • デバイスまたはオペレーティングシステムでは、タッチを、タッチシーケンスまたは複数のタッチを組み合わせたジェスチャとして、様々に解釈します。

  • タッチ対応デバイスを(指、スタイラスまたはポインティングデバイスで)タッチするたびに、マウスイベントも送出されます。マウスイベントは MouseEvent クラスのイベントタイプで処理できます。または、タッチイベントのみに応答するようにアプリケーションを設計することができます。または、両方のイベントに応答するようにアプリケーションを設計することができます。

  • アプリケーションは、同時に発生した複数のタッチイベントに応答して、それぞれを個別に処理できます。

通常は、検出 API を使用して、アプリケーションで処理するイベントを条件に基づいて仕分けしたり、処理方法を指定したりします。アプリケーションでランタイム環境を把握していれば、ユーザーがアプリケーションを操作したときに、適切なハンドラーを呼び出したり、正しいイベントオブジェクトを確立したりできます。または、現在の環境では特定の入力を処理できないことを通知して、ユーザーに代替機能や情報を提供することができます。詳しくは、 タッチイベント処理 および ジェスチャイベント処理 を参照してください。

フェーズ

タッチアプリケーションとマルチタッチアプリケーションでは、ユーザー操作のフェーズを追跡するプロパティがタッチイベントオブジェクトに用意されています。ユーザー入力の開始、更新または終了などの各フェーズを処理して、ユーザーにフィードバックを提供する ActionScript を記述してみましょう。ユーザーが画面をタッチしたり、画面上でタッチポイントを移動したりしたときに、イベントのフェーズに応じて、ビジュアルオブジェクトを変化させてみます。または、フェーズを使用して、ジェスチャの展開に合わせてジェスチャの特定のプロパティを追跡します。

タッチポイントイベントでは、ユーザーが特定の操作オブジェクトを操作している時間を追跡します。アプリケーションは、複数の同時タッチポイントのフェーズを個別に追跡して、それぞれを処理することができます。

ジェスチャでは、ジェスチャの遷移に従って、その遷移に関する固有の情報を解釈します。(単一または複数の)接触点の座標が、画面上で移動するのを追跡します。