【发布时间】:2026-02-08 19:30:01
【问题描述】:
所以我正在开发一个需要键盘输入的 Flash 项目。在舞台上有一个从上方看到的实例“汽车”,它应该是旋转和驱动旋转方向。这是迄今为止我在 AS3 中汇总的内容:
//Required stuff
import flash.ui.Keyboard;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.display.Stage;
import flash.display.MovieClip;
Car.addEventListener(Event.ENTER_FRAME, this.RunGame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
//Variables
var keys:Array = []
var vDrive:Number = 3; //Car's current base speed
var vx:Number = 0; //Speed along x axis
var vy:Number = 0; //Speed along y axis
var vMax:Number = 30; //Top speed
var vRot:Number = 3; //Rotation speed
var vAcc:Number = 1.1; //Factor for acceleration
var vDeAcc:Number = 0.90; //Factor for de-acceleration
//Game Loop
RunGame();
function RunGame():void
{
// Drive forwards
if (keys[Keyboard.UP])
{
if (vDrive < vMax)
vDrive += vAcc;
}
// Reverse
if (keys[Keyboard.DOWN])
{
if (vDrive > vMax)
vDrive *= vAcc;
}
// Turn right
if (keys[Keyboard.RIGHT])
{
Car.rotation += vRot;
}
// Turn left venstre
if (keys[Keyboard.LEFT])
{
Car.rotation -= vRot;
}
//Movement
// Friction
vDrive *= vDeAcc;
//Calculating movement vector
vx = vDrive * Math.cos(toRad(Car.rotation));
vy = vDrive * Math.sin(toRad(Car.rotation));
//Update car position
Car.x -= vx ;
Car.y -= vy;
}
但是,当我运行程序时,箭头键似乎没有任何作用。 对于“onKeyDown”和“onKeyUp”,我还收到以下编译器警告:
迁移问题:未触发 onKeyDown 事件处理程序 在 ActionScript 3.0 中运行时由 Flash Player 自动生成。你 必须首先使用 addEventListener 为事件注册此处理程序 ('keyDown', callback_handler)
尝试添加它所建议的内容只会产生错误,说 callback_handler 未定义。 我现在一直在试图弄清楚如何使键盘输入起作用。有人知道吗?
【问题讨论】:
标签: actionscript-3 flash input keyboard