AS3 - 基于加速度计检测移动方向

时间:2012-11-23 13:18:59

标签: actionscript-3 accelerometer

下面的代码根据加速度计移动动画片段。如何检测它移动的方向或静止状态?

import flash.sensors.Accelerometer; 
 import flash.events.AccelerometerEvent;

 var my_acc:Accelerometer = new Accelerometer();
my_acc.setRequestedUpdateInterval(50);

 my_acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
 function onAccUpdate(e:AccelerometerEvent):void{

 my_dot.x -= (e.accelerationX*10);


if (my_dot.x < 0) { 
 my_dot.x = 0; 
 } else if (my_dot.x > stage.stageWidth) { 
 my_dot.x = stage.stageWidth; 
 } 


}

1 个答案:

答案 0 :(得分:3)

使用

获得真实的加速度矢量
Sqrt(accelerationX^2 + accelerationY^2)

然后,你用

获得度数的方向
Cos^-1 (accelerationX / realAcceleration)

尝试以下方法:

var accVector = Math.sqrt(Math.pow(e.accelerationX,2) +
                          Math.pow(e.accelerationY,2))

var direction = Math.acos(e.accelerationX / accVector)

并注意你以弧度为单位得到direction

如果你想要deegrees:var directionDeg = direction * 180/Math.PI

如果您的accelerationY为否定,则需要更改directionDeg的符号,并且(如果需要)添加360以获得正数。