| 套件 | 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
隱藏繼承公用屬性
顯示繼承公用屬性