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 に答える