0

このコードをキーボードの使用から Android デバイスの加速度計の使用に変換するのを誰かに手伝ってもらいたいです。したがって、デバイスが Y 軸に傾いている場合、アプリケーションはオブジェクトを前方に移動させるように応答する必要があり、デバイスが X 軸または -X 軸に傾いている場合、アプリケーションはオブジェクトを左または右に回転させる必要があります。

誰でも助けることができますか?

私のコード:

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;
    }

}

}

4

2 に答える 2

0

e.accelerationX,e.accelerationY AND 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); 

}
于 2013-04-04T18:17:48.863 に答える