包 | flash.sensors |
类 | public class Accelerometer |
继承 | Accelerometer EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2, Flash Player 10.1, Flash Lite 4 |
注意:使用 Accelerometer.isSupported
属性测试运行时环境是否能够使用此功能。当为各个 API 入口列出的运行时版本可以访问 Accelerometer 类及其成员时,运行时的当前环境将确定此功能的可用性。例如,您可以使用 Flash Player 10.1 的 Accelerometer 类属性编译代码,但是需要使用 Accelerometer.isSupported
属性测试 Accelerometer 功能在 Flash Player 运行时的当前部署环境中的可用性。如果 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 | |||
为响应来自加速计传感器的更新而调度更新事件。 | 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 对象添加一个事件侦听器,并且相关的处理程序会使用时间戳和加速值来填充文本字段。否则,该文本字段会表示当前的环境不支持该功能。
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
方法用于设置更新所需的时间间隔。以毫秒为单位度量时间间隔。更新间隔仅用作节省电池电量的提示。加速更新间的实际时间可能大于或小于此值。更新间隔的任何更改都会影响所有注册侦听器。无需调用 setRequestedUpdateInterval()
方法即可使用 Accelerometer 类。在这种情况下,应用程序会根据设备的默认间隔接收更新。
参数
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 | 加速计更新的时间戳。 |
accelerationX | 沿 X 轴的加速值(以 G 为单位,即 9.8m/sec/sec)。 |
accelerationY | 沿 Y 轴的加速值(以 G 为单位,即 9.8m/sec/sec)。 |
accelerationZ | 沿 Z 轴的加速值(以 G 为单位,即 9.8m/sec/sec)。 |
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, 11:04 AM Z