| 套件 | flash.ui |
| 類別 | public final class GameInputDevice |
| 繼承 | GameInputDevice Object |
| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 3.7 |
GameInputDevice 類別代表常用於遊戲的單一輸入裝置。
這個類別包括的方法和屬性可用來:
-
啟用或停用輸入裝置。在初始時依預設停用裝置 (
enabled設為false)。您必須將enabled設定為true明確地啟用裝置,才能取得裝置中的控制項值。 -
取得輸入裝置的名稱和 ID。
name和id屬性會共同唯一識別裝置。若是 Android 裝置,裝置製造商會提供這些值。若是 iOS 裝置,id可能會在您每次連線裝置時變更。 -
列舉輸入裝置上的控制項。裝置上的實體控制項會對應到邏輯
GameInputControl物件,並且儲存在清單中。請使用getControlAt()方法存取清單中的控制項。 -
管理取樣之控制項值的快取。直接從裝置物件取樣一組控制項值,是三個取得控制項值的方法之一 (另兩個方法會使用
GameInputControl類別上的value方法,這裡有說明)。當您需要以比應用程式的影格速率還快的速率存取控制項值時,樣本快取會很有用。
永遠在這個類別上設定 GameInputEvent.DEVICE_REMOVED 事件的偵聽程式。這個偵聽程式可讓您處理意外中斷連線或關閉的裝置。當裝置中斷連線時,會釋放它的 GameInputDevice 物件,因為與相關聯的裝置中斷連線之後,物件不再有效。
移除後重新連線的 Android 裝置會保留第一次連線時的 ID。您可以在邏輯上比對 ID 來重新連線裝置。若是 iOS 裝置,ID 可能會在您重新連線裝置時變更。
注意:您不可以依賴清單中的裝置順序 (新增及移除裝置時可能會變更順序)。
如需詳細資訊,請參閱 Adobe Air Developer Center 文章:Adobe AIR 上的遊戲控制器 (英文)。
若是 Android,這個功能支援最低 4.1 的 Android OS 版本,並且至少需要 SWF 版本 20 及命名空間 3.7。若是 iOS,這個功能支援最低 9.0 的 iOS 版本,並且至少需要 SWF 版本 34 及命名空間 23.0。
相關 API 元素
| 屬性 | 定義自 | ||
|---|---|---|---|
![]() | constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | |
| enabled : Boolean
啟用或停用這個裝置。 | GameInputDevice | ||
| id : String [唯讀]
傳回這個裝置的 ID。 | GameInputDevice | ||
| name : String [唯讀]
傳回這個裝置的名稱。 | GameInputDevice | ||
| numControls : int [唯讀]
傳回這個裝置中的控制項數目。 | GameInputDevice | ||
| sampleInterval : int
指定擷取控制項值的速率 (毫秒)。 | GameInputDevice | ||
| 方法 | 定義自 | ||
|---|---|---|---|
將快取的樣本值寫入 ByteArray。 | GameInputDevice | ||
從裝置擷取特定控制項。 | GameInputDevice | ||
![]() |
指出物件是否有已定義的指定屬性。 | Object | |
![]() |
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | |
![]() |
指出指定的屬性是否存在,以及是否可列舉。 | Object | |
![]() |
為迴圈作業設定動態屬性的可用性。 | Object | |
要求這個裝置開始保留取樣值的快取。 | GameInputDevice | ||
停止樣本快取。 | GameInputDevice | ||
![]() |
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | |
![]() |
會傳回指定之物件的字串形式。 | Object | |
![]() |
會傳回指定之物件的基本值。 | Object | |
| 常數 | 定義自 | ||
|---|---|---|---|
| MAX_BUFFER_SIZE : int = 32000 [靜態]
指定用來快取取樣之控制項值的緩衝區的大小上限。 | GameInputDevice | ||
enabled | 屬性 |
id | 屬性 |
name | 屬性 |
numControls | 屬性 |
sampleInterval | 屬性 |
sampleInterval:int| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 3.7 |
指定擷取控制項值的速率 (毫秒)。預設為 0,表示值是每個影格更新一次。設定較高的 sampleValue 會引導 GameInput 以比應用程式影格速率還快的速率取樣控制項值。
雖然值可以更常更新,而非每個影格更新一次,但每個控制項只會傳送一個事件。因此,如果一個影格中的某個值更新了兩次,則只會傳送一個變更事件,並且只能擷取最新的值。
若要擷取不止最新的值,您可以使用這個類別中的快取方法來快取樣本值。當您快取取樣的值時,這個屬性會決定值寫入快取的頻率。
預設值為 0。
實作
public function get sampleInterval():int public function set sampleInterval(value:int):void擲回值
IOError — 在裝置停用時設定這個屬性。
| |
RangeError — sampleInterval 小於 0。
|
getCachedSamples | () | 方法 |
public function getCachedSamples(data:ByteArray, append:Boolean = false):int| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 3.7 |
將快取的樣本值寫入 ByteArray。快取的樣本值會依照擷取的順序 (最舊的值優先,最新的值最後) 寫入 ByteArray。
這個方法會傳回寫入 ByteArray 之快取樣本值的數目 (而非值本身)。如果 append 參數是 false (預設值),則寫入樣本值之前會從快取清除 ByteArray。如果 append 為 true,樣本值會附加至 ByteArray,以保留較舊的值。在下列清況附加樣本值:
- 您必須保留特定數目的可用值。
- 您必須保留大於快取的操作記錄。
append 為 true,則應用程式必須負責清除 ByteArray。如果 ByteArray 未清除,就會繼續成長,進而可能毀損應用程式。
快取是在樣本值寫入 ByteArray 之後清除的。
如果呼叫這個方法時裝置已停用,則會擲回 IOError。
參數
data:ByteArray — 保留所擷取之資料的 ByteArray。填入寫入為雙精度浮點數的樣本值。當在控制項的位置未偵測到任何變更時,ByteArray 會以控制項值的形式保留 NaN。
| |
append:Boolean (default = false) — 旗標,示範如何將資料寫入 ByteArray。如果為 true,則取樣的值會寫入陣列結尾。如果為 false,則會移除 ByteArray 的內容,然後將資料寫入陣列。預設值為 false。
|
int — 寫入 ByteArray 的樣本 (不是值) 數目。
|
擲回值
ArgumentError — data 為 null。
| |
IOError — 呼叫這個方法且停用裝置。
|
getControlAt | () | 方法 |
public function getControlAt(i:int):GameInputControl| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 3.7 |
從裝置擷取特定控制項。
GameInputDevice 會將裝置的控制項儲存在清單中。您可以使用 getControlAt() 方法來存取裝置上的個別控制項。
每當新增或移除裝置時,索引中的控制項順序都會變更。您可以檢查 GameInputControl 物件上的 id 屬性,以比對特定控制項。
即使裝置未啟用,您還是可以取得控制項。不過,您無法讀取已停用裝置中的控制項值。這個功能可讓您先讀取控制項的屬性,然後才啟用所屬的裝置。您可以使用這個功能,在啟用裝置之前,先判斷裝置是否適用於您的應用程式。
參數
i:int — GameInputControls 清單中 GameInputControl 的索引位置。
|
GameInputControl — 指定的索引位置中的 GameInputControl 物件。
|
擲回值
RangeError — 索引小於零或大於 (numControls - 1)。
|
startCachingSamples | () | 方法 |
public function startCachingSamples(numSamples:int, controls:Vector.<String>):void| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 3.7 |
要求這個裝置開始保留取樣值的快取。sampleInterval 屬性決定取樣的頻率。numSamples 參數會指定要快取的樣本數。controls 參數會指定要取樣之控制項的 ID 值。
控制項值是依指定的順序來快取。請呼叫 getCachingSamples() 方法來擷取取樣的值。
如果快取取樣的值時所需的記憶體大於 MAX_BUFFER_SIZE 常數中指定的值,則這個方法會擲回 MemoryError。如果呼叫這個方法之前尚未啟用裝置,則會擲回 IOError。
參數
numSamples:int — 要儲存在快取中的樣本數。擷取樣本時,您永遠取得少於或等於 numSamples。
| |
controls:Vector.<String> — String 的向量。每個 String 都是控制項的 ID。樣本是依這個向量中提供的相同順序寫入。
|
擲回值
RangeError — numSamples 小於或等於零,或者 controls 中的項目小於零或大於 (numControls - 1)。
| |
ArgumentError — 控制項為 null 或未包含至少一個項目,或者包含無效的項目。
| |
IOError — 在已停用的裝置上呼叫這個方法。
| |
MemoryError — 快取大小 (值數目 * 樣本) 大於 MAX_BUFFER_SIZE。
|
stopCachingSamples | () | 方法 |
MAX_BUFFER_SIZE | 常數 |
public static const MAX_BUFFER_SIZE:int = 32000| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 3.7 |
指定用來快取取樣之控制項值的緩衝區的大小上限。如果 startCachingSamples 傳回的樣本需要比您指定的記憶體更多,則會擲回記憶體錯誤。
Tue Jun 12 2018, 03:47 PM Z
隱藏繼承公用屬性
顯示繼承公用屬性