Я работаю над игрой DDR для своего курса по программированию игр, и я смог заставить стрелки работать с помощью мыши. Но нужно также заставить его работать, используя клавиатуру. Я не могу заставить его работать с помощью клавиатуры.AS3 Преобразование MouseEvent в KeyboardEvent
Вот мой исходный код, как бы преобразовать MouseEvent для работы с помощью KeyboardEvents для кнопок вверх, вниз, влево и вправо?
import flash.events.KeyboardEvent;
import flash.display.MovieClip;
import flashx.textLayout.operations.ModifyInlineGraphicOperation;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
var pattern = new Array();
var buttons = new Array();
buttons.push(up, bottom, left, right);
var position = 0;
var playersTurn = false;
var mc_starttext:MovieClip;
var mc_background:MovieClip;
//generate the pattern
setTimeout(nextMove, 1000); // call after 1 second
// Expecting click from they keyboard
up.addEventListener(MouseEvent.CLICK, clicked);
bottom.addEventListener(MouseEvent.CLICK, clicked);
left.addEventListener(MouseEvent.CLICK, clicked);
right.addEventListener(MouseEvent.CLICK, clicked);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onkeyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, onkeyRelease);
mc_starttext.buttonMode = true;
mc_starttext.addEventListener(MouseEvent.CLICK, startClick)
mc_background.buttonMode = true;
mc_background.addEventListener(MouseEvent.CLICK, startClick)
function startClick(e:MouseEvent):void{
dispatchEvent(new Event("START_GAME"));
}
function hideScreen():void{
this.visible = false;
}
function showScreen():void{
this.visible = true;
}
function onkeyPress(event:KeyboardEvent):void{
if (event.keyCode == 13)//enter
{
this.mc_background.visible = false
this.mc_starttext.visible = false
//this.StartCover.visible = false;
//this.StartText.visible = false;
//this.score.text = position.toString();
//this.score.visible = true;
//startPlay = true;
setTimeout(nextMove, 2000);//Call nextmove after two second
}
if (event.keyCode == 32)
{
trace("space bar");
}
}
function onkeyRelease(event:KeyboardEvent):void{
if (event.keyCode == 32){
trace("space release");
}
}
function clicked(clickInfo:MouseEvent){
if(!playersTurn) return;
if (clickInfo.target == pattern[position]){
trace("right");
position = position + 1;
//Check to see if it is computers turn
if (position == pattern.length){
//CPUs turn
position = 0;
setTimeout(nextMove, 1000)
}
// play button animation
clickInfo.target.gotoAndPlay(2);
} else {
trace("wrong");
}
}
function nextMove(){
if (position < pattern.length){
pattern[position].play();
position++;
setTimeout(nextMove, 1000);
} else {
// Generate random number
var randomNumber = Math.floor(Math.random()*4);
pattern.push(buttons[randomNumber]);
buttons[randomNumber].play();
playersTurn = true;
position = 0;
}
}
Решено ли это сейчас или вам все еще нужно подключить одну функцию к мыши и клавиатуре? –
На самом деле я еще не смог его решить! Это должно быть в понедельник, и я работал на других курсах, так что держал это, потому что я застрял. Я не мог понять, как заставить его работать как для мыши, так и для клавиатуры. @ VC.One – DaveTheCoder