2015-06-14 24 views
1

切換到我的第二個場景後,鍵盤事件不起作用,直到我左鍵單擊屏幕。
如何避免左鍵單擊,以便在移動到第二個場景後直接觸發我的鍵盤事件?去AS3中的另一個場景後點擊刪除?

更多詳細信息,您可能需要:

1場景

btnStart.addEventListener(MouseEvent.CLICK, initGame); 

function initGame(e:MouseEvent) { 
    gotoAndPlay(1, "Gameplay"); 
} 

第二個場景
我只用1幀。我有一個對象。我設置了鍵盤事件功能來將對象向右或向左移動。我stop()框架。
直到我給屏幕一個鼠標點擊,我的鍵盤才能工作。

var moveUp:Boolean = false; 
var moveDown:Boolean = false; 
var moveLeft:Boolean = false; 
var moveRight:Boolean = false; 
var isMoving:Boolean = false; 

stage.addEventListener(KeyboardEvent.KEY_DOWN, moveCowboy); 
function moveCowboy(e:KeyboardEvent) { 
    if (e.keyCode == Keyboard.W) { 
     moveUp = true; 
     if (isMoving == false) 
      mycowboy.gotoAndPlay(15); 
     isMoving = true; 
    } else if (e.keyCode == Keyboard.S) { 
     moveDown = true; 
      if (isMoving == false) 
      mycowboy.gotoAndPlay(15); 
     isMoving = true; 
    } else if (e.keyCode == Keyboard.A) { 
     moveLeft = true; 
     if (isMoving == false) 
      mycowboy.gotoAndPlay(15); 
     isMoving = true; 
    } else if (e.keyCode == Keyboard.D) { 
     moveRight = true; 
     if (isMoving == false) 
      mycowboy.gotoAndPlay(15); 
     isMoving = true; 
    } 
} 

stage.addEventListener(KeyboardEvent.KEY_UP, stopCowboy); 
function stopCowboy(e:KeyboardEvent) { 
    if (e.keyCode == Keyboard.W) { 
     moveUp = false; 
    } else if (e.keyCode == Keyboard.S) { 
     moveDown = false; 
    } else if (e.keyCode == Keyboard.A) { 
     moveLeft = false; 
    } else if (e.keyCode == Keyboard.D) { 
     moveRight = false; 
    } 
    if (moveUp == false && moveDown == false && moveLeft == false && moveRight == false) { 
     if (isMoving == true) 
      mycowboy.gotoAndPlay(1); 
     isMoving = false; 
    } 
} 

var myTimer:Timer = new Timer(20); 
myTimer.addEventListener(TimerEvent.TIMER, myTimerFunc); 

function myTimerFunc(e:Event):void { 
    //cowboy movement 
    if (moveUp) { 
     mycowboy.y -= 3; 
     mycowboy.rotation = 0; 
    } 
    else if (moveDown) { 
     mycowboy.y += 3; 
     mycowboy.rotation = 180; 
    } 
    else if (moveLeft) { 
     mycowboy.x -= 3; 
     mycowboy.rotation = -90; 
    } 
    else if (moveRight) { 
     mycowboy.x += 3; 
     mycowboy.rotation = 90; 
    } 
} 

myTimer.start(); 

stop(); 
+0

後所有的相關的代碼的末尾添加這,不只是它的一些描述。 – null

+0

@null確定完成。 –

回答

0

你的代碼

stage.focus = stage; 
+0

真棒!只需添加一個簡單的代碼 –

相關問題