套件 | 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