2010-12-18 4 views

답변

3

내에서 두 번 만 불을 누르면됩니다 경우

//for gg 
var inCombo = false; 
function KeyPress(Key) { 
    if(Key=='g') { 
     if(!inCombo) { 
      inCombo = true; 
      setTimeout('inCombo=false;', 100); 
     } else { 
      //Do the action here 
     } 
    } 
} 

예 (의사). 간단히 일반 키 이벤트를 등록하고 키를 배열에 푸시하십시오.

이제 명령에 대해 확인하는 함수를 호출 할 수 있습니다 물론,

// More or less pseudo code 
function deleteLine(){}; 
function copyLine(){};  

var commands = {'dd': deleteLine, 'yy': copyLine};  

function onKeyPress(e) { 
    keyList.push(e.key); 

    // in this example keyList = ['d', 'y', 'i', 'd', 'd'] 
    var result = handleEvent(); 
} 

function handleEvent(keyList) { 
     // more pseudo code follows 

     var cmds = commands.keyValue.sortByLengthDescending(); 
     for(var c in cmds) { 

      // match the keys 
      var ckey = c.split(''); 
      for(var i = keyList.length; i >= 0; i--) { 
       if (keyList[i] !== ckey.shift()) { 
        break; 
       } 
       if (ckey.length === 0) { 
        return commands[c](); 
       } 
      } 
     } 
} 

이, 간단한 청소 (당신이 그것을 작성하는 방법을 정확하게에 따라 다름) 및 확장 성이 더 많은 명령을 추가하는 것은 매우 간단합니다 당신 변경하여 명령 기능에 매개 변수를 전달할 수 있도록하십시오.

+0

+1 왜 완전하고 우아한 해결책이 더 많은 표를 얻지 못했는지는 잘 모르겠지만 분명히 시간 초과 된 접근 방식을 선호하지만 이는 매우 훌륭하고 완벽합니다. 기능적인 예. – Basic

+0

글쎄요, "da full codez"는 게시하지 않았습니다. 즉, 1000의 배율로 얻은 득표 수를 즉시 줄입니다.) –

5

모든 키 누름 이벤트를 모니터링하고 다중 누름 콤보에서 첫 번째 키를 찾았 으면 타이머를 시작해야합니다. 타이머가 활성화되어있는 동안 콤보의 두 번째 키가 눌러 진 경우, 작업을 수행하십시오. //Do the action hereg 당신은 할 수 없습니다 100ms의

관련 문제