如何在闪光灯中沿旋转方向移动物体?
How to move object in the direction of rotation in flash?
我有一个 "car" 必须按照它旋转的方向移动。
现在它只是朝一个方向旋转并继续上升,down.Please 帮助我。
我正在使用 adobe flash pro cs6 和 actionscript3。
我的代码是:
var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;
car.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed);
function fl_MoveInDirectionOfKey(event:Event)
{
if (upPressed)
{
car.y += 5;
}
if (downPressed)
{
car.y -= 5;
}
if (rightPressed)
{
car.rotation += 5;
}
if (leftPressed)
{
car.rotation -= 5;
}
}
function fl_SetKeyPressed(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.UP:
{
upPressed = true;
break;
}
case Keyboard.DOWN:
{
downPressed = true;
break;
}
case Keyboard.LEFT:
{
leftPressed = true;
break;
}
case Keyboard.RIGHT:
{
rightPressed = true;
break;
}
}
}
function fl_UnsetKeyPressed(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.UP:
{
upPressed = false;
break;
}
case Keyboard.DOWN:
{
downPressed = false;
break;
}
case Keyboard.LEFT:
{
leftPressed = false;
break;
}
case Keyboard.RIGHT:
{
rightPressed = false;
break;
}
}
}
您需要使用vector math根据角度和距离移动小车的x,y
。
例如,您可以根据这样的角度和速度移动您的汽车:
function move(degrees:Number, speed:Number):void {
var radians:Number = degrees * (Math.PI / 180);
car.x += Math.cos(radians) * speed;
car.y += Math.sin(radians) * speed;
}
那么你可以用小车的rotation
作为角度,5
或-5
作为速度:
if (upPressed) {
move(car.rotation, 5);
}
if (downPressed) {
move(car.rotation, -5);
}
请注意,这假设 rotation=0
意味着您的汽车朝向右侧。如果您将汽车朝向不同的方向绘制,则需要补偿绘制汽车的角度,例如,如果汽车朝上,则需要使用 move(car.rotation - 90, 5)
.
我有一个 "car" 必须按照它旋转的方向移动。 现在它只是朝一个方向旋转并继续上升,down.Please 帮助我。 我正在使用 adobe flash pro cs6 和 actionscript3。 我的代码是:
var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;
car.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed);
function fl_MoveInDirectionOfKey(event:Event)
{
if (upPressed)
{
car.y += 5;
}
if (downPressed)
{
car.y -= 5;
}
if (rightPressed)
{
car.rotation += 5;
}
if (leftPressed)
{
car.rotation -= 5;
}
}
function fl_SetKeyPressed(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.UP:
{
upPressed = true;
break;
}
case Keyboard.DOWN:
{
downPressed = true;
break;
}
case Keyboard.LEFT:
{
leftPressed = true;
break;
}
case Keyboard.RIGHT:
{
rightPressed = true;
break;
}
}
}
function fl_UnsetKeyPressed(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.UP:
{
upPressed = false;
break;
}
case Keyboard.DOWN:
{
downPressed = false;
break;
}
case Keyboard.LEFT:
{
leftPressed = false;
break;
}
case Keyboard.RIGHT:
{
rightPressed = false;
break;
}
}
}
您需要使用vector math根据角度和距离移动小车的x,y
。
例如,您可以根据这样的角度和速度移动您的汽车:
function move(degrees:Number, speed:Number):void {
var radians:Number = degrees * (Math.PI / 180);
car.x += Math.cos(radians) * speed;
car.y += Math.sin(radians) * speed;
}
那么你可以用小车的rotation
作为角度,5
或-5
作为速度:
if (upPressed) {
move(car.rotation, 5);
}
if (downPressed) {
move(car.rotation, -5);
}
请注意,这假设 rotation=0
意味着您的汽车朝向右侧。如果您将汽车朝向不同的方向绘制,则需要补偿绘制汽车的角度,例如,如果汽车朝上,则需要使用 move(car.rotation - 90, 5)
.