パッケージ | flash.ui |
クラス | public final class GameInput |
継承 | GameInput EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 3.7 |
GameInput
クラスは GameInput API のエントリポイントです。この API を使用して、アプリケーションとゲーム入力デバイス(ジョイスティック、ゲームパッド、ペン型スキャナーなど)との通信を管理できます。
このクラスの主な目的は、アプリケーションプラットフォームに接続されているサポート対象の入力デバイスにアクセスできるようにすることです。この静的クラスは、接続済み入力デバイスをリストに列挙します。リストのデバイスには、getDeviceAt(index:int)
メソッドを使用してアクセスします。
numDevices
プロパティは、プラットフォームに現在接続されている入力デバイスの数です。デバイスリストの上限を決定するには、この値を使用します。
入力デバイスの追加および取り外しをユーザーに通知するイベントを監視するには、このクラスのインスタンスを使用します。このようなイベントを監視するには、次の操作を実行します。
-
GameInput
クラスのインスタンスを作成します。 -
GameInputEvent.DEVICE_ADDED
イベントおよびGameInputEvent.DEVICE_REMOVED
イベントのイベントリスナーを追加します(イベントが登録できるのは、このクラスのインスタンス上だけです)。
このクラスには isSupported
フラグも含まれます。このフラグは、GameInput API がプラットフォームでサポートされているかどうかを示します。
詳しくは、Adobe Air Developer Center の記事「Game controllers on Adobe AIR」を参照してください。
Android の場合、この機能は Android OS バージョン 4.1 以降に対応しており、必要最低バージョンは SWF バージョン 20 および名前空間 3.7 です。iOS の場合、この機能は iOS バージョン 9.0 以降に対応しており、必要最低バージョンは SWF バージョン 34 および名前空間 23.0 です。
同じ複数のデバイスの中から特定の 1 つのゲーム入力デバイスを検出する方法
2 人以上のプレーヤーがいるゲームの一般的な要件として、複数の同一デバイスから特定の 1 つのデバイスを検出することがあります。例えば、どのデバイスが「Player 1」、「Player 2」、...、「Player N」を表しているのかをアプリケーションで特定する必要があるような場合です。
解決策:
-
未検出のすべての入力デバイスにあるすべてのコントロールにイベントリスナーを追加します。これらのイベントリスナーで
Event.CHANGE
イベントをリッスンします。このイベントは、コントロール値が変更されたときに送出されます。 - あるコントロールが最初にアクティブになった(ボタンが押される、トリガーが引かれるなど)ときに、アプリケーションでそのデバイスにラベルを付けます。
- 残りの未検出の入力デバイスから、すべてのイベントリスナーを削除します。
- 必要に応じて手順 1~3 を繰り返し、残りの未検出入力デバイスを特定します。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
isSupported : Boolean [静的] [読み取り専用]
現在のプラットフォームで GameInput API. がサポートされるかどうかを示します。 | GameInput | ||
numDevices : int [静的] [読み取り専用]
接続された入力デバイスの数です。 | GameInput |
メソッド | 定義元 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
[静的]
接続された入力デバイスのリストで、指定したインデックス位置にある入力デバイスを取得します。 | GameInput | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
ゲーム入力デバイスがプラットフォームに接続されたとき、または既に接続されているデバイスがオンになったときに送出されます。 | GameInput | |||
ゲーム入力デバイスがプラットフォームから削除されたとき、または接続されたデバイスがオフになったときに送出されます。 | GameInput | |||
ゲーム入力デバイスが接続されていても使用できない場合に送出されます。 | GameInput |
isSupported | プロパティ |
numDevices | プロパティ |
getDeviceAt | () | メソッド |
public static function getDeviceAt(index:int):GameInputDevice
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 3.7 |
接続された入力デバイスのリストで、指定したインデックス位置にある入力デバイスを取得します。
インデックス内のデバイスの順序は、デバイスが追加または削除されるごとに変更される可能性があります。GameInputDevice
オブジェクトの name
プロパティと id
プロパティをチェックして、特定の入力デバイスを照会できます。
パラメーター
index:int — 入力デバイスのリストでのインデックス位置です。
|
GameInputDevice — 指定された GameInputDevice です。
|
例外
RangeError — 指定されたインデックスが 0 未満または (numDevices - 1) より大きい場合。
|
deviceAdded | イベント |
flash.events.GameInputEvent
ゲーム入力デバイスがプラットフォームに接続されたとき、または既に接続されているデバイスがオンになったときに送出されます。
deviceRemoved | イベント |
deviceUnusable | イベント |
flash.events.GameInputEvent
ゲーム入力デバイスが接続されていても使用できない場合に送出されます。このイベントは Windows のみに固有です。例えば、別の DirectInput ベースのアプリケーションが既にデバイスを使用している場合に、Windows のサンドボックス化されたブラウザーで起こります。
Tue Jun 12 2018, 10:34 AM Z