Accelerometer-Klasse
flash.events:EventDispatcher
Die Accelerometer-Klasse setzt Ereignisse ab, die auf einer vom Bewegungssensor des Geräts erkannten Aktivität basieren. Diese Daten repräsentieren die Position des Geräts oder die Bewegung entlang einer dreidimensionalen Achse. Wenn das Gerät bewegt wird, erkennt der Sensor diese Bewegung und gibt Beschleunigungsdaten zurück. Die Accelerometer-Klasse bietet Methoden zum Abfragen, ob ein Beschleunigungssensor unterstützt wird oder nicht, und zum Festlegen der Rate, mit der Beschleunigungsereignisse abgesetzt werden.
Hinweis: Verwenden Sie die Accelerometer.isSupported-Eigenschaft, um zu testen, ob die Laufzeitumgebung die Verwendung dieses Features unterstützt. Während die Accelerometer-Klasse und ihre Mitglieder für die Laufzeitumgebungen, die für jeden API-Eintrag aufgeführt sind, zugänglich sind, bestimmt die aktuelle Umgebung für die Laufzeit die Verfügbarkeit dieser Funktion. Sie können zum Beispiel Code mit den Eigenschaften der Accelerometer-Klasse für Flash Player 10.1 kompilieren, Sie müssen jedoch die Accelerometer.isSupported-Eigenschaft verwenden, um die Verfügbarkeit der Accelerometer-Funktion in der aktuellen Entwicklungsumgebung für die Flash Player-Laufzeitumgebung zu testen. Wenn Accelerometer.isSupported zur Laufzeit den Wert true hat, wird Accelerometer zurzeit unterstützt.
AIR-Profilunterstützung: Diese Funktion wird nur auf mobilen Geräten unterstützt. Auf Desktopgeräten oder Geräten mit AIR für TV wird sie nicht unterstützt. Weitere Informationen zum AIR-Support über mehrere Profile finden Sie unter Unterstützung von AIR-Profilen.
Im folgenden Beispiel bewegt die Anwendung ein Sprite basierend auf update-Ereignissen für den Beschleunigungssensor. Die update-Ereignisse des Beschleunigungssensors zeigen die Bewegung des Geräts an.
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.AccelerometerEvent;
import flash.sensors.Accelerometer;
public class AccelerometerTest extends Sprite
{
private var ball:Sprite;
private var accelerometer:Accelerometer;
private var xSpeed:Number = 0;
private var ySpeed:Number = 0;
private const RADIUS = 20;
public final function AccelerometerTest()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
createBall();
if (Accelerometer.isSupported)
{
accelerometer = new Accelerometer();
accelerometer.addEventListener(AccelerometerEvent.UPDATE, accUpdateHandler);
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
}
private final function createBall():void
{
ball = new Sprite();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, RADIUS);
ball.cacheAsBitmap = true;
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
addChild(ball);
}
private final function enterFrameHandler(event:Event):void
{
event.stopPropagation();
moveBall();
}
private final function moveBall():void
{
var newX:Number = ball.x + xSpeed;
var newY:Number = ball.y + ySpeed;
if (newX < 20)
{
ball.x = RADIUS;
xSpeed = 0;
}
else if (newX > stage.stageWidth - RADIUS)
{
ball.x = stage.stageWidth - RADIUS;
xSpeed = 0;
}
else
{
ball.x += xSpeed;
}
if (newY < RADIUS)
{
ball.y = RADIUS;
ySpeed = 0;
}
else if (newY > stage.stageHeight - RADIUS)
{
ball.y = stage.stageHeight - RADIUS;
ySpeed = 0;
}
else
{
ball.y += ySpeed;
}
}
private final function accUpdateHandler(event:AccelerometerEvent):void
{
xSpeed -= event.accelerationX * 2;
ySpeed += event.accelerationY * 2;
}
}
}