0

플래시 게임을 만들고 싶습니다. 키 "x"를 클릭하면 공격 1 애니메이션이 시작되고, 키 "x"를 더블 클릭하면 공격 2 애니메이션이 시작됩니다. 어떻게 만드나요? 나는 아이디어가 없다.Action Script3. 더블 클릭 키보드의 키에 이벤트 리스너를 추가하는 방법

stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down); 


private function key_down(event:KeyboardEvent) 
{ 
    if (event.keyCode == 88) 
    { 
     if (attack > 0) 
     { 
      return; 
     }// don't interrupt other attack 
     for (c in codes) 
     { 
      if (codes[c] == event.keyCode) 
      { 
       attack = c; 
       Hero.gotoAndStop("attack" + attack); 
      } 
     } 
    } 

답변

1

저장합니다 키를 누를 때의 시간 (예를 들면 getTimer() 포함) 후 보조 언론의 시간을 비교 : "x는"그것을 클릭하면 내가, 간단한 코드가 지금은

는 attack1 애니메이션을 재생하기 시작 이전 시간으로. 간격이 충분히 작 으면 두 번 누르십시오. 설명을 위해 다른

var keysPressed:Object = {}; 

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboard); 

function keyboard(e:KeyboardEvent):void 
{ 
    if(keysPressed[e.keyCode] !== undefined) 
    { 
     // Compare time, maybe half a second (500ms). 
     if(getTimer() - 500 < keysPressed[e.keyCode]) 
     { 
      // Double press. 
      // 
     } 
    } 

    keysPressed[e.keyCode] = getTimer(); 
} 
+0

추가'// 하나의 press' 지점하십시오

거친 검증되지 않은 코드는 당신에게 아이디어를 제공합니다. – Vesper

+0

@Vesper 실제로 하나의 프레스에 대해서는 그보다 조금 더 작업해야 할 것입니다. 거기에있는 간단한 'else'블록은 첫 번째 키 누름이 계산되지 않았 음을 의미합니다. – Marty

+0

실제로 한 번의 누름은 실제로 함수의 마지막 명령문 다음에 오는 두 번 누름 및 단일 누름 논리에서'return' 문을 통해 구현됩니다. 예, 단일 프레스 논리는 단일 프레스 이벤트 후에 이중 프레스의 가능성을 설명해야합니다. – Vesper

0
//function for calculating is click is double click or single click: 


stage.addEventListener(MouseEvent.CLICK, checkDoubleClick); 
var mClick:Boolean = false; 
var timer; 
var timer2; 
// 
function checkDoubleClick(e:*) 
{ 
    if (! mClick) 
    { 
     timer = getTimer()/1000; 
     mClick = true; 
    } 
    else 
    { 
     timer2 = getTimer()/1000; 
    } 
    //if it is a double click 
    if ((timer2-timer)<.20) 
    { 
     trace("double click"); 
    } 
    else 
    { 
     timer = getTimer()/1000; 
     trace("single click"); 
    } 
}