2014-04-13 1 views
0

나는 어떤 성공도없이 이것을 시도하고 시도하는 수많은 방법을 시도했다! 현재 코드가있는 순간에 사용자가 도약 모션 컨트롤러 위에 5 개의 손가락을 올리면 5 초 후에 카운터가 최대 169 개까지 도달 할 때까지 계속 카운트를 시작합니다. 최대 1 개를 추가하기를 원합니다. 나는 사용자가 도약 동작을 10 번 가져갈 수 있도록 노력하고 있으므로 사용자가 운동을 할 때마다 점수를 1/10, 2/10 등으로 점수에 추가합니다. 하지만 사용자가 그것을 한 번하면 나는 169/10을 얻는다! 아무도 이것에 대한 제안이나 올바른 방향으로 나를 가리킬 수있어?! 그것의 대학 프로젝트를 위해 나는 여기에서 나의 깊이에서 느낀다! 나는 모든 코드를 포함했다 :도약 모션 컨트롤러 setTimeout 자바 스코어가 부정확합니까?

//Set up the controller 
var controller = new Leap.Controller(); 
var isCounting = false; 
controller.on('frame' , function(frame){ 
    c.clearRect(0, 0, width, height); 
    var numberOfFingers = frame.fingers.length; 
    c.font = "200px Arial"; 
    c.fillStyle = '#3e8a41'; 
    c.textAlign = 'center'; 
    c.textBaseline = 'middle'; 
    c.fillText(numberOfFingers , width/2 , height/2); 

    if(numberOfFingers == 5 && !isCounting) { 
    isCounting = true; 
    setTimeout(function(){ 
     isCountring = false; 
     if(numberOfFingers == 5){ //5 fingers still after 5s 
     var start = parseInt(document.getElementById('count').innerHTML); 
     var end = start+1; 
     document.getElementById('count').innerHTML = end; 
     } 
     }, 5*1000); //your 5s 
    } 
}); 


controller.connect(); 

답변

0

나는 문제가 당신이 setTimeouts을 많이 만들고 각 사용자의 값으로 1을 추가 있도록 frame 이미, 정말 빠르게 실행된다는 생각합니다.

var isCounting = false; 
controller.on('frame' , function(frame){ 
    c.clearRect(0, 0, width, height); 
    var numberOfFingers = frame.fingers.length; 

    if(numberOfFingers == 5 && !isCounting) { 
     isCounting = true; 
     setTimeout(function(){ 
      isCountring = false; 
      if(numberOfFingers == 5){ //5 fingers still after 5s 
       var start = parseInt(document.getElementById('count').innerHTML); 
       var end = start+1; 
       document.getElementById('count').innerHTML = end; 
      } 
     }, 5*1000); //your 5s 
    } 
}); 

나는 내가 100 % 확신 할 수없는 도약을 보유하고 있지 않습니다하지만 노력 가치 : 나는 당신이 무슨 일을하는지 추적 할 플래그를 설정하는 것이 좋습니다.

+0

안녕하세요, 당신의 도움을 주셔서 감사합니다,이 작동하지 않았다 ... 그것은 캔버스가 사라질 원인이 controller.on ('프레임', 함수 (프레임) 반복되고 있기 때문에입니까? 위의 코드 안에 그 코드를 포함시켜 주시겠습니까? 다시 감사합니다. – plimbs

+0

내 코드를 병합해야합니다 (그냥 isCounting이있는 모든 라인을 추가하십시오). –

+0

미안하지만 뇌진탕이 조금 있습니다! 1 초 5 초가 지나면 다시 시도하고 다시 할 때 2로 증가하지 않으므로 10 초에 1을 고수 할 것입니다. 매번 1 씩 증가하는 방법이 있습니까? – plimbs

관련 문제