適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: 從伺服器擷取資料...
從伺服器擷取資料...
flash.ui 

GameInputDevice  - AS3

套件flash.ui
類別public final class GameInputDevice
繼承GameInputDevice Inheritance Object

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

GameInputDevice 類別代表常用於遊戲的單一輸入裝置。

這個類別包括的方法和屬性可用來:

  • 啟用或停用輸入裝置。在初始時依預設停用裝置 (enabled 設為 false)。您必須將 enabled 設定為 true 明確地啟用裝置,才能取得裝置中的控制項值。
  • 取得輸入裝置的名稱和 ID。nameid 屬性會共同唯一識別裝置。若是 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 元素



公用屬性
 屬性定義自
 Inheritedconstructor : Object
類別物件的參照或是特定物件實體的建構函數。
Object
      enabled : Boolean
啟用或停用這個裝置。
GameInputDevice
      id : String
[唯讀] 傳回這個裝置的 ID。
GameInputDevice
      name : String
[唯讀] 傳回這個裝置的名稱。
GameInputDevice
      numControls : int
[唯讀] 傳回這個裝置中的控制項數目。
GameInputDevice
      sampleInterval : int
指定擷取控制項值的速率 (毫秒)。
GameInputDevice
公用方法
 方法定義自
  
    getCachedSamples(data:ByteArray, append:Boolean = false):int
將快取的樣本值寫入 ByteArray。
GameInputDevice
  
從裝置擷取特定控制項。
GameInputDevice
 Inherited
指出物件是否有已定義的指定屬性。
Object
 Inherited
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。
Object
 Inherited
指出指定的屬性是否存在,以及是否可列舉。
Object
 Inherited
為迴圈作業設定動態屬性的可用性。
Object
  
    startCachingSamples(numSamples:int, controls:Vector.<String>):void
要求這個裝置開始保留取樣值的快取。
GameInputDevice
  
停止樣本快取。
GameInputDevice
 Inherited
傳回代表此物件的字串,根據地區特定慣例進行格式化。
Object
 Inherited
會傳回指定之物件的字串形式。
Object
 Inherited
會傳回指定之物件的基本值。
Object
公用常數
 常數定義自
      MAX_BUFFER_SIZE : int = 32000
[靜態] 指定用來快取取樣之控制項值的緩衝區的大小上限。
GameInputDevice
屬性詳細資訊
    

enabled

屬性
enabled:Boolean

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

啟用或停用這個裝置。預設會停用裝置。啟用裝置以存取或取樣它的控制項值。此外,裝置及其個別控制項只會在裝置啟用時傳送事件。

移除裝置時,裝置就會變成停用。您還是可以取得已停用裝置的相關資訊,但是無法存取控制項值或啟動快取。此外,如果裝置已移除,便無法啟用。如果移除裝置,enabled 會永遠傳回 false



實作
    public function get enabled():Boolean
    public function set enabled(value:Boolean):void
    

id

屬性 
id:String  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

傳回這個裝置的 ID。您可以透過裝置的 ID 來區別裝置。

注意:若是 Android 裝置,裝置製造商會提供裝置 ID。若是 iOS 裝置,ID 可能會在您重新連線裝置時變更。



實作
    public function get id():String
    

name

屬性 
name:String  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

傳回這個裝置的名稱。名稱有助於識別裝置的類型。

注意:裝置製造商會提供裝置的名稱。



實作
    public function get name():String
    

numControls

屬性 
numControls:int  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

傳回這個裝置中的控制項數目。



實作
    public function get numControls():int
    

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,以保留較舊的值。在下列清況附加樣本值:

  • 您必須保留特定數目的可用值。
  • 您必須保留大於快取的操作記錄。
重要:如果 appendtrue,則應用程式必須負責清除 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

()方法 
public function stopCachingSamples():void

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

停止樣本快取。雖然仍會傳送控制項上的變更事件,但不會在快取中儲存其他樣本。仍以 sampleInterval 指定的頻率擷取值,但是那些值不會儲存在快取中。因此,您只能擷取最新的值。


擲回值
IOError — 未先啟用裝置即呼叫這個方法。
常數詳細資訊
    

MAX_BUFFER_SIZE

常數
public static const MAX_BUFFER_SIZE:int = 32000

語言版本: ActionScript 3.0
執行階段版本: AIR 3.7

指定用來快取取樣之控制項值的緩衝區的大小上限。如果 startCachingSamples 傳回的樣本需要比您指定的記憶體更多,則會擲回記憶體錯誤。





[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。