2013-04-04 2 views
0

Я хочу, чтобы кто-то помог мне преобразовать этот код с клавиатуры, используя акселерометр для Android. Поэтому, если устройство наклонено к оси Y, приложение должно ответить назад, чтобы объект перемещался вперед, и если устройство наклонено к оси X или оси X, приложение должно вращать объект влево или вправо.Flash Cs5.5 Android AIR - конвертировать код с клавиатуры в акселерометр

Может ли кто-нибудь помочь?

Мой код:

package com.asgamer.directionalmovement 
{ 

import flash.display.MovieClip; 
import flash.display.Stage; 
import flash.events.Event; 
import com.senocular.utils.KeyObject; 
import flash.ui.Keyboard; 

public class Ship extends MovieClip 
{ 

    private var key:KeyObject; 
    private var speed:Number = 0.3; 
    private var rotateSpeed:Number = 5; 
    private var vx:Number = 0; 
    private var vy:Number = 0; 
    private var friction:Number = 0.95; 

    public function Ship() : void 
    { 
     key = new KeyObject(stage); 
     addEventListener(Event.ENTER_FRAME, loop, false, 0, true); 
    } 

    public function loop(e:Event) : void 
    { 

     if (key.isDown(Keyboard.UP)) 
     { 
      vy += Math.sin(degreesToRadians(rotation)) * speed; 
      vx += Math.cos(degreesToRadians(rotation)) * speed; 
     } else { 
      vy *= friction; 
      vx *= friction; 
     } 

     if (key.isDown(Keyboard.RIGHT)) 
      rotation += rotateSpeed; 
     else if (key.isDown(Keyboard.LEFT)) 
      rotation -= rotateSpeed; 

     if (key.isDown(Keyboard.SPACE)) 
      stage.addChild(new Laser(x, y, rotation)); 

     y += vy; 
     x += vx; 

     if (x > stage.stageWidth) 
      x = 0; 
     else if (x < 0) 
      x = stage.stageWidth; 

     if (y > stage.stageHeight) 
      y = 0; 
     else if (y < 0) 
      y = stage.stageHeight; 
    } 

    public function degreesToRadians(degrees:Number) : Number 
    { 
     return degrees * Math.PI/180; 
    } 

} 

}

ответ

0

Вы можете использовать метод dispatchEvent, редактирования свойств события, такие, как тип и ускорение. У меня нет устройства Android, поэтому не могу сказать, что код ниже будет работать на 100%.

var ev:AccelerometerEvent = new AccelerometerEvent(AccelerometerEvent.UPDATE); 
ev.accelerationX = yourKeyboardAccelerationX; 
ev.accelerationX = yourKeyboardAccelerationY; 
dispatchEvent(ev); 
0

вы можете играть с e.accelerationX, e.accelerationY И e.accelerationX:

import flash.sensors.Accelerometer; 
import flash.events.AccelerometerEvent; 
var my_acc:Accelerometer 
if(Accelerometer.isSupported) 
    initAcc(); 
else 
trace("Accelerometer is not Supported") 

function initAcc():void 
{ 
var my_acc:Accelerometer = new Accelerometer(); 
//setting the update interval 
my_acc.setRequestedUpdateInterval(50); 

//catch the update event 
my_acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate); 

} 
function onAccUpdate(e:AccelerometerEvent):void{ 
//you can use the e.accelerationX,e.accelerationY AND e.accelerationX 

myObject.x -= (e.accelerationX*10); 
myObject.y += (e.accelerationY*10); 

} 
Смежные вопросы