Använd sensorn för accelerometern genom att instansiera ett Accelerometer-objekt och registrera
update
-händelser som skickas. Händelsen
update
är ett Accelerometer-händelseobjekt. Händelsen har fyra egenskaper, som anges med siffror:
-
accelerationX
– Accelerationen längs med x-axeln mätt i antal g:n. X-axeln går från vänster till höger på enheten när den står upprätt. (Enheten är i upprätt läge när den övre delen av enheten är pekar uppåt.) Accelerationen är positiv om enheten flyttas åt höger.
-
accelerationX
– Accelerationen längs med y-axeln mätt i antal g:n. Y-axeln går nedifrån och upp på enheten när den står upprätt. (Enheten är i upprätt läge när den övre delen av enheten är pekar uppåt.) Accelerationen är positiv om enheten flyttas uppåt i förhållande till axeln.
-
accelerationZ
– Accelerationen längs med z-axeln mätt i antal g:n. Z-axeln går vinkelrätt mot enhetens kant. Accelerationen är positiv om enheten flyttas så att ytan pekar uppåt. Accelerationen är negativ om ytan på enheten pekar mot marken.
-
timestamp
– Det antal millisekunder som vid tiden för händelsen har passerat sedan körningen initierades.
1 g är standardaccelerationen på grund av gravitationen, cirka 9,8 m/sek
2.
.
Det här grundläggande exemplet visar accelerometerdata i ett textfält:
var accl:Accelerometer;
if (Accelerometer.isSupported)
{
accl = new Accelerometer();
accl.addEventListener(AccelerometerEvent.UPDATE, updateHandler);
}
else
{
accTextField.text = "Accelerometer feature not supported";
}
function updateHandler(evt:AccelerometerEvent):void
{
accTextField.text = "acceleration X: " + evt.accelerationX.toString() + "\n"
+ "acceleration Y: " + evt.accelerationY.toString() + "\n"
+ "acceleration Z: " + evt.accelerationZ.toString()
}
Om du vill använda exemplet måste du först skapa textfältet
accTextField
och lägga till det i visningslistan innan koden används.
Du kan justera det önskade tidsintervallet för accelerometerhändelser genom att anropa metoden
setRequestedUpdateInterval()
för Accelerometer-objektet. Den här metoden tar en parameter,
interval
, vilken är det uppdateringsintervall som krävs i millisekunder:
var accl:Accelerometer;
accl = new Accelerometer();
accl.setRequestedUpdateInterval(1000);
Den faktiska tiden mellan uppdateringarna av accelerometern kan vara längre eller kortare än det här värdet. Förändringar av uppdateringsintervallet påverkar alla registrerade avlyssnare. Om du inte anropar metoden
setRequestedUpdateInterval()
tar programmet emot uppdateringar beroende på enhetens standardintervall.
Accelerometerdata kan ha en viss grad av inexakthet. Du kan använda ett glidande medelvärde av senaste data för utjämning av data. I följande exempel faktoreras de senaste accelerometerläsningarna med den aktuella läsningen för ett mer avrundat resultat:
var accl:Accelerometer;
var rollingX:Number = 0;
var rollingY:Number = 0;
var rollingZ:Number = 0;
const FACTOR:Number = 0.25;
if (Accelerometer.isSupported)
{
accl = new Accelerometer();
accl.setRequestedUpdateInterval(200);
accl.addEventListener(AccelerometerEvent.UPDATE, updateHandler);
}
else
{
accTextField.text = "Accelerometer feature not supported";
}
function updateHandler(event:AccelerometerEvent):void
{
accelRollingAvg(event);
accTextField.text = rollingX + "\n" + rollingY + "\n" + rollingZ + "\n";
}
function accelRollingAvg(event:AccelerometerEvent):void
{
rollingX = (event.accelerationX * FACTOR) + (rollingX * (1 - FACTOR));
rollingY = (event.accelerationY * FACTOR) + (rollingY * (1 - FACTOR));
rollingZ = (event.accelerationZ * FACTOR) + (rollingZ * (1 - FACTOR));
}
Men detta glidande medelvärde är endast önskvärt om uppdateringsintervallet för accelerometern är litet.