在我的javascript游戏中,我有一个函数,每隔0.1秒调用一次setInterval:
updateTimerID = setInterval(function(e) {checkProgress();}, 100);
我将用户得分存储在一个变量中,并在checkProgress
函数中包含一个条件语句,用于检查我的滑块x位置何时介于45 - 48之间:
var score = 0;
function checkProgress(){
if( slider_1.x => 45 && slider_1.x <= 48 ) {
score = score + 1
}
}
然后,当发生这种情况时,我将得分变量增加1。我遇到的问题是我只希望每次更新分数,而不是每次都更新 - 因此我的功能每隔0.1秒调用一次 - 此时我的分数每次至少增加3次
if( slider_1.x => 50 && slider_1.x <= 60 ) {
score ++;
}
我可以每次限制为1吗?
答案 0 :(得分:0)
你可以通过将分数更新时间存储在一个变量上而不是从当前时间减去它来查找从上次更新传递的时间大于1秒
var score = 0;
var last_update =0;
function checkProgress(){
if( slider_1.x => 45 && slider_1.x <= 48 && ((new Date().getTime()-last_update) > 1000) ) {
score = score + 1
last_update=new Date().getTime();
}
}
答案 1 :(得分:0)
这样的事可能吗?:
var isOver = false;
function checkProgress(){
if( slider_1.x => 45 && slider_1.x <= 48 && !isOver ) {
score = score + 1;
isOver = true;
} else if( slider_1.x < 45 && slider_1.x > 48 ) {
isOver = false;
}
}
答案 2 :(得分:0)
这样的事情可以解决问题
var score = 0;
var inc = true;
function checkProgress(){
if( slider_1.x => 45 && slider_1.x <= 48 ) {
if(inc)
{
score = score + 1
inc = false;
}
}
if(slider_1.x < 45 || slider_1.x > 48)
{
inc = true;
}
}