我正在爲我的遊戲編程課程開發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