2013-09-25 4 views
0

Я пытаюсь написать простую программу в AS3 Non-OOP (я кодирую непосредственно на временной шкале), но моя функция «выборы» не вызывается, как должна. На самом деле это вообще не называется, и я не получаю ошибки компилятора. Вот мой код:Использование событий клавиатуры в AS3

//Black jack game 
import flash.events.Event; 
import flash.ui.Mouse; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 
addEventListener(Event.ENTER_FRAME,talk); 

stop(); 
var yourHand1:Number = 0; 
var cHand1:Number = 0; 
var yourHand2:Number = 0; 
var cHand2:Number = 0; 

function talk(e:Event){ 

    if(yourHand1 < 3){ 
     yourHand1 +1; 
    } 
    if(cHand1 < 3){ 
     cHand1 +1; 
    } 
    cHand1 = 1+Math.floor(Math.random() * 11); 
    yourHand1 = 1+Math.floor(Math.random()* 11); 
    trace(cHand1); 
    trace(yourHand1); 
    cHand.text = cHand1.toString(); 
    yourHand.text = yourHand1.toString(); 
    removeEventListener(Event.ENTER_FRAME, talk); 
    //choices(); 
} 

addEventListener(KeyboardEvent.KEY_DOWN,choices); 

function choices(event:KeyboardEvent){ 
    trace("Would you like to hit or stay?"); 
    trace("Press left arrow to hit, space bar to stay"); 
    if(event.charCode == 65){ 
     trace("You have chosen to stay"); 
    } 
    if(event.charCode == 66){ 
     letsDoItAllAgain(); 
    } 
} 


function letsDoItAllAgain(){ 

    if(yourHand2 <= 2){ 
     yourHand2 +2; 
    } 
    if(cHand2 <= 2){ 
     cHand2 +2; 
    } 
    cHand2 = 1+Math.floor(Math.random() * 11); 
    yourHand2 = 1+Math.floor(Math.random()* 11); 
    trace(cHand2); 
    trace(yourHand2); 
    cHand.text = (cHand2 + cHand1).toString(); 
    yourHand.text = (yourHand1 + cHand2).toString(); 
    removeEventListener(Event.ENTER_FRAME, letsDoItAllAgain); 
} 
+1

простой программы в AS3 Непро- ООП, это неверный оператор, as3 - язык ООП даже на временной линии. – joshua

+0

Работает ли это, если вы вызываете это напрямую? Если это так, то можно сделать вывод, что событие «KEY_DOWN» не срабатывает, и это будет в центре внимания проблемы. – puggsoy

ответ

3

Попробуйте добавить eventListener на сцене.

stage.addEventListener(KeyboardEvent.KEY_DOWN,choices); 
0

Кроме того Пан говорит:

stage.addEventListener(KeyboardEvent.KEY_DOWN,choices); 

важно знать, что вы можете потерять фокус вашего главного окна. У меня есть несколько подобных в моем проекте (тоже в сроках), и я должен регулярно это (когда я знаю, что фокус может быть потерян) вызовом:

stage.focus = stage; 
Смежные вопросы