2013-05-15 2 views
0

У меня есть 2 видеоклипа. У одного есть персонаж, идущий, а другой он бежит. Как сделать так, чтобы, если я нажму на клавишу со стрелкой влево, он будет воспроизводить ходячий клип. Если я быстро нажимаю стрелку влево, он переключится на рабочий клип. Я использую ActionScript 3.Actionscript 3 обнаружение последовательного нажатия клавиши

+1

Что вы уже пробовали? – Kodiak

+0

Не будет ли ключ к определенному периоду времени, чтобы пробиться в весну лучше? – adaam

ответ

0

Для этого требуется немного кода, так как Flash AS3 не имеет встроенной поддержки двойных щелчков. Вот простой пример того, как вы можете добиться этого эффекта с помощью SetTimeout

var keyCodeToListenFor = '13'; // can be any keycode; 
var keySinglePress:Boolean = false; 
var keyDoublePress:Boolean = false; 
var timeToWaitForDoublePress:Number = 400; 
var waitingForDoublePress:Boolean = false; 
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown); 


function handleKeyDown(e:Event) { 

    if (e.keyCode == keyCodeToListenFor) { 

     keySinglePress = true; 
     if (waitingForDoublePress) { 
      keyDoublePress = true; 
     } 

     waitingForDoublePress = true; 

     setTimeout(function() { 
      waitingForDoublePress = false; 
      keyDoublePress = false; 
     }, timeToWaitForDoublePress); 


    } 

    if (keyDoublePress) { 
     trace('You logged a double press!') 
    } else if (keySinglePress) { 
     trace('You logged a single press!'); 
    } 
} 
+0

Я думаю, что функция, вызываемая через 'setTimeout()', должна проверить, была ли запущена двойная печать, и если да, то она должна вернуться. Предположим, что вы хотите, чтобы ваш игрок заработал долго, дважды нажмите D (для запуска справа), он запускается, затем включается таймер BAM, и символ перестает работать и начинает ходить. – Vesper

+0

Да, отличная точка. Вышеприведенный пример следует использовать в лучшем случае как свободное руководство. –