我尝试过无数种方法去尝试,但没有成功!在现有的代码中,当用户在跳跃运动控制器上盘旋5指时,5秒后,计数器将开始连续计数,直到达到169或更多,我希望它能加到1。我试图让用户在跳跃运动上盘旋10次,所以每次用户做练习时,它会将1加1/ 10,然后再加2/ 10等等。但当用户做了一次,我得到169 / 10!有没有人对此有任何建议,或能为我指出正确的方向?这是一个大学项目,我觉得我的深度在这里!我已经包括了所有的代码:
//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();发布于 2014-04-14 13:36:46
我认为问题在于frame已经运行得非常快,所以您创建了大量的setTimeouts,并且每个setTimeouts都为您的值增加了1。我建议你设置一个旗子来跟踪你正在做的事情:
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%,但这是值得一试。
https://stackoverflow.com/questions/23042444
复制相似问题