저는 게임 프로그래밍 과정에서 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