Usando Acelerômetro no Flash Lite 4.0

Tivemos o lançamento do Nokia N8, o primeiro dispositivo oficialmente a suportar Flash Lite 4.0. Além do Nokia N8, também temos o Nokia C7 e o Nokia E7, todos rodando o sistema operacional Symbian^3 e com o Adobe Flash Lite 4.0 já instalado. Isso implica a possibilidade do desenvolvimento de aplicativos para Symbian^3 usando ActionScript 3.0 rodando pelo browser ou standalone
Precisamos atentar para o fato de que o Flash Lite 4.0 não é o Flash Player 10.1, eles possuem algumas diferenças significativas:

  • Flash Lite suporta algumas funcionalidades parcialmente.
  • Flash Lite adiciona algumas funcionalidades para trabalhar especificamente com dispositivos movéis.

O Flash Lite 4.0 é baseado no Flash Player 10, possuindo recursos que foram introduzido no Flash Player 9 e 10. Entre os recursos disponivéis estão:

  • Multi-touch support
  • Flash Player 10 text engine
  • Using inline text input
  • RTMP data channel
  • RTMPE
  • RTMPT and RTMPTE
  • Multi bit-rate streaming
  • Geolocation
  • Accelerometer
  • SharedObject Remote(Obaaaa! :D)

Além disso veja as classes parcialmente suportadas e as classes não suportadas.
Vamos ao nosso primeiro exemplo com utilização das novas capacidades do Flash Lite 4.0, nesse caso, acelerômetro.

  • Crie um arquivo do tipo Flash Lite 4.0 pelo Flash CS5 ou pelo Adobe Device Central CS5.
  • Adicione três campos de textos dinâmicos, neles serão mostrados as coordenadas de x, y e z.

Começaremos nossa codificação, teremos um método para criar a bola que sofrerá os efeitos do acelerômetro.
[ACTIONSCRIPT3]
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);
}
[/ACTIONSCRIPT3]
Em seguida, verificamos se o aparelho tem acelerômetro para adicionarmos os listeners que pega os dados do sensor e para atualizar as posições da bola.
[ACTIONSCRIPT3]
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);
}
}
[/ACTIONSCRIPT3]
E o restante do código.
[ACTIONSCRIPT3]
function enterFrameHandler(event:Event):void
{
event.stopPropagation();
moveBall();
}
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 stage.stageHeight – RADIUS)
{
ball.y = stage.stageHeight – RADIUS;
ySpeed = 0;
}
else
{
ball.y += ySpeed;
}
}

function accUpdateHandler(event:AccelerometerEvent):void
{
xSpeed += event.accelerationX * 2;
ySpeed -= event.accelerationY * 2;

txtX.text = new String(event.accelerationX);
txtY.text = new String(event.accelerationY);
txtZ.text = new String(event.accelerationZ);
}
[/ACTIONSCRIPT3]
Agora basta pedir para testar no emulador do Adobe Device Central CS5, devemos ter algo parecido com isto:

Adobe Device Central CS5

DOWNLOAD SOURCE
Para saber mais:
http://help.adobe.com/en_US/flashlite/dev/4/index.html

ActionScript 3.0, Flash, Flash Lite, Nokia , , ,