1

下面的代码基于加速度计移动一个影片剪辑。如何检测它向哪个方向移动或它是否静止?

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; 
 } 


}
4

1 回答 1

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了弧度!

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

如果您accelerationY是负数,则需要更改符号directionDeg并(如果需要)添加 360 以始终获得正数。

于 2012-11-23T13:40:45.663 回答