Accelerometer 类根据由设备的运动传感器检测的活动调度事件。此数据表示设备的位置或沿三维轴的移动。当设备移动时,传感器会检测到此移动并返回加速数据。Accelerometer 类提供了各种方法,用于查询是否支持加速计以及设置调度加速事件时使用的速率。
注意:使用 Accelerometer.isSupported
属性测试运行时环境是否能够使用此功能。当为各个 API 入口列出的运行时版本可以访问 Accelerometer 类及其成员时,运行时的当前环境将确定此功能的可用性。例如,您可以使用 Flash Player 10.1 的 Accelerometer 类属性编译代码,但是需要使用 Accelerometer.isSupported
属性测试 Accelerometer 功能在 Flash Player 运行时的当前部署环境中的可用性。如果 Accelerometer.isSupported
在运行时为 true
,则当前存在 Accelerometer 支持。
1 package 2 { 3 import flash.display.Sprite; 4 import flash.display.StageAlign; 5 import flash.display.StageScaleMode; 6 import flash.events.AccelerometerEvent; 7 import flash.sensors.Accelerometer; 8 import flash.text.TextField; 9 import flash.text.TextFieldAutoSize; 10 11 /** 12 * @author Frost.Yen 13 * @E-mail 871979853@qq.com 14 * @create 2015-6-17 下午2:59:32 15 * 16 */ 17 public class AccelermeterTest extends Sprite 18 { 19 private var _accelerometer:Accelerometer; 20 private var _oldAccX:Number; 21 private var _oldAccY:Number; 22 private var _oldAccZ:Number; 23 private var _sum:Number; 24 private var _txt:TextField; 25 public function AccelermeterTest() 26 { 27 super(); 28 // 支持 autoOrient 29 stage.align = StageAlign.TOP_LEFT; 30 stage.scaleMode = StageScaleMode.NO_SCALE; 31 _txt=new TextField() 32 _txt.x=10; 33 _txt.y=10; 34 _txt.autoSize=TextFieldAutoSize.LEFT; 35 this.addChild(_txt); 36 if(Accelerometer.isSupported){ 37 _oldAccX=0; 38 _oldAccY=0; 39 _oldAccZ=0; 40 _sum=0; 41 _accelerometer=new Accelerometer(); 42 _accelerometer.setRequestedUpdateInterval(1000); 43 _accelerometer.addEventListener(AccelerometerEvent.UPDATE,onUpdate); 44 }else{ 45 _txt.text="当前设备不支持加速计。"; 46 } 47 } 48 private function onUpdate(e:AccelerometerEvent):void{ 49 _sum=0; 50 const k:Number=5;//越大敏感度越高 51 var accX:Number=Math.round(e.accelerationX*k)/k; 52 var accY:Number=Math.round(e.accelerationY*k)/k; 53 var accZ:Number=Math.round(e.accelerationZ*k)/k; 54 _sum+=Math.abs(accX-_oldAccX); 55 _sum+=Math.abs(accY-_oldAccY); 56 _sum+=Math.abs(accZ-_oldAccZ); 57 _oldAccX=accX; 58 _oldAccY=accY; 59 _oldAccZ=accZ; 60 _txt.text= 61 "event.accelerationX="+e.accelerationX+" "+ 62 "event.accelerationY="+e.accelerationY+" "+ 63 "event.accelerationZ="+e.accelerationZ+" "+ 64 "accX="+accX+" "+ 65 "accY="+accY+" "+ 66 "accZ="+accZ+" "+ 67 "sum="+_sum; 68 trace(e.accelerationX,e.accelerationY,e.accelerationZ); 69 if(_sum >0.2){ 70 //trace(sum,"摇手机"); 71 } 72 } 73 } 74 }