套件 | flash.sensors |
類別 | public class Accelerometer |
繼承 | Accelerometer EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
注意:請使用 Accelerometer.isSupported
屬性來測試執行階段環境是否有能力使用此功能。雖然 Accelerometer 類別及其成員可供為每個 API 項目所列出的執行階段版本存取,但是執行階段目前的環境會決定此功能的可用性。例如,您可以使用 Accelerometer 類別屬性為 Flash Player 10.1 編譯程式碼,但是您需要使用 Accelerometer.isSupported
屬性,在 Flash Player 執行階段目前的部署環境中,測試 Accelerometer 功能的可用性。如果 Accelerometer.isSupported
在執行階段是 true
,則表示 Accelerometer 支援目前存在。
AIR 描述檔支援:僅行動裝置支援此功能。桌面或 AIR for TV 裝置不支援。如需有關跨多個描述檔之 API 支援的詳細資訊,請參閱 AIR 描述檔支援。
詳細資訊
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
isSupported : Boolean [靜態] [唯讀]
如果裝置中可以使用加速計感應器,isSupported 屬性會設定為 True,否則設定為 False。 | Accelerometer | ||
muted : Boolean [唯讀]
指定使用者已經拒絕存取加速計 (true) 或允許 (false)。 | Accelerometer |
方法 | 定義自 | ||
---|---|---|---|
會建立新的 Accelerometer 實體。 | Accelerometer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
setRequestedUpdateInterval 方法用於設定希望的更新時間間隔。 | Accelerometer | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
當加速計變更它的狀態時傳送。 | Accelerometer | |||
會傳送 update 事件以回應加速計感應器的更新。 | Accelerometer |
isSupported | 屬性 |
isSupported:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
如果裝置中可以使用加速計感應器,isSupported
屬性會設定為 True
,否則設定為 False
。
實作
public static function get isSupported():Boolean
範例 ( 如何使用本範例 )
Accelerometer.isSupported
屬性來測試在執行階段的 Accelerometer 支援。如果目前的環境支援 Accelerometer 功能,則會將事件偵聽程式加入 Accelerometer 物件,而相關聯的處理常式則會在文字欄位中填入時間戳記與加速值。否則,文字欄位會指出在目前環境中不支援該功能。
var myTextField:TextField = new TextField(); myTextField.width = 200; addChild(myTextField); var acc1:Accelerometer = new Accelerometer(); var isSupported:Boolean = Accelerometer.isSupported; checksupport(); function checksupport():void { if (isSupported) { myTextField.text = "Accelerometer feature supported"; acc1.addEventListener(AccelerometerEvent.UPDATE, updateHandler); } else { myTextField.text = "Accelerometer feature not supported"; } } function updateHandler(evt:AccelerometerEvent):void { myTextField.text = String("at: " + evt.timestamp + "\n" + "acceleration X: " + evt.accelerationX + "\n" + "acceleration Y: " + evt.accelerationY + "\n" + "acceleration Z: " + evt.accelerationZ); }
muted | 屬性 |
Accelerometer | () | 建構函式 |
public function Accelerometer()
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
會建立新的 Accelerometer 實體。
setRequestedUpdateInterval | () | 方法 |
public function setRequestedUpdateInterval(interval:Number):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
setRequestedUpdateInterval
方法用於設定希望的更新時間間隔。時間間隔的測量以毫秒為單位。更新間隔僅用於提示以保留電池電力。加速更新之間的實際時間可能大於或小於這個值。在更新間隔中所做的任何變更會影響所有註冊的偵聽程式。 您可以使用 Accelerometer 類別,無需呼叫 setRequestedUpdateInterval()
方法。 在這種情況下,應用程式會根據裝置預設間隔接收更新。
參數
interval:Number — 要求的更新間隔。若 interval 設為 0,將使用最低支援的更新間隔。
|
擲回值
ArgumentError — 指定的 interval 小於零。
|
status | 事件 |
flash.events.StatusEvent
屬性 StatusEvent.type =
flash.events.StatusEvent.STATUS
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
當加速計變更它的狀態時傳送。
注意:加速計在某些裝置隨時都可使用。在這類的裝置上,Accelerometer 物件絕對不會傳送 status
事件。
status
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
code | 物件狀態的說明。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
level | 訊息的類別,例如 "status" 、"warning" 或 "error" 。 |
target | 回報其自身狀態的物件。 |
update | 事件 |
flash.events.AccelerometerEvent
屬性 AccelerometerEvent.type =
flash.events.AccelerometerEvent.UPDATE
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
會傳送 update
事件以回應加速計感應器的更新。會在以下情況傳送事件:
- 當新的偵聽程式函數透過
addEventListener()
附加,這個事件會一次傳遞到所有註冊的偵聽程式,以提供加速計目前的值。 - 每當加速計依照裝置決定的間隔從平台取得更新時。
- 每當應用程式遺失加速計的變更時 (例如,執行階段在閒置之後繼續)。
AccelerometerEvent
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
timestamp | Accelerometer 更新的時間戳記。 |
accelerationX | 沿著 x 軸的加速值 (以 G 為單位,9.8 公尺/秒平方)。 |
accelerationY | 沿著 y 軸的加速值 (以 G 為單位,9.8 公尺/秒平方)。 |
accelerationZ | 沿著 z 軸的加速值 (以 G 為單位,9.8 公尺/秒平方)。 |
update
事件移動 Sprite。加速計 update
事件會指出裝置的移動。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.AccelerometerEvent; import flash.sensors.Accelerometer; public class AccelerometerTest extends Sprite { private var ball:Sprite; private var accelerometer:Accelerometer; private var xSpeed:Number = 0; private var ySpeed:Number = 0; private const RADIUS = 20; public final function AccelerometerTest() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; createBall(); if (Accelerometer.isSupported) { accelerometer = new Accelerometer(); accelerometer.addEventListener(AccelerometerEvent.UPDATE, accUpdateHandler); stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } } private final function createBall():void { ball = new Sprite(); ball.graphics.beginFill(0xFF0000); ball.graphics.drawCircle(0, 0, RADIUS); ball.cacheAsBitmap = true; ball.x = stage.stageWidth / 2; ball.y = stage.stageHeight / 2; addChild(ball); } private final function enterFrameHandler(event:Event):void { event.stopPropagation(); moveBall(); } private final function moveBall():void { var newX:Number = ball.x + xSpeed; var newY:Number = ball.y + ySpeed; if (newX < 20) { ball.x = RADIUS; xSpeed = 0; } else if (newX > stage.stageWidth - RADIUS) { ball.x = stage.stageWidth - RADIUS; xSpeed = 0; } else { ball.x += xSpeed; } if (newY < RADIUS) { ball.y = RADIUS; ySpeed = 0; } else if (newY > stage.stageHeight - RADIUS) { ball.y = stage.stageHeight - RADIUS; ySpeed = 0; } else { ball.y += ySpeed; } } private final function accUpdateHandler(event:AccelerometerEvent):void { xSpeed -= event.accelerationX * 2; ySpeed += event.accelerationY * 2; } } }
Tue Jun 12 2018, 03:47 PM Z