我正在为我的学校项目制作游戏,我有这个分数计数器:
function countUp(count)
{
var div_by = 100,
speed = Math.round(count / div_by),
$display = $('.count'),
run_count = 1,
int_speed = 24;
var int = setInterval(function() {
if(run_count < div_by){
$display.text(speed * run_count);
run_count++;
} else if(parseInt($display.text()) < count) {
var curr_count = parseInt($display.text()) + 1;
$display.text(curr_count);
} else {
clearInterval(int);
}
}, int_speed);
}
countUp(1209);
它有效但我需要在按下左键时暂停计数器,当我按下右键时我需要再次重新启用它,为此我目前使用的是一个案例:
document.onkeydown = function() {
switch (window.event.keyCode) {
case 37:
myVid.muted=true;
var div_by = 2445675675457,
speed = Math.round(count / div_by),
$display = $('.count'),
run_count = 1,
int_speed = 200;
break;
case 38:
myVideo1.play();
myVideo2.play();
countUp(9999999999999);
break;
case 39:
myVid.muted=false;
var div_by = 2445675675457,
speed = Math.round(count / div_by),
$display = $('.count'),
run_count = 1,
int_speed = 9999999999999;
break;
case 40:
myVideo1.pause();
myVideo2.pause();
break;
}
我怎样才能实现这个目标
答案 0 :(得分:0)
这是一个非常快速的解决方案。
var isPaused = false;
function countUp(count)
{
var div_by = 100,
speed = Math.round(count / div_by),
$display = $('#count'),
run_count = 1,
int_speed = 24;
var int = setInterval(function() {
if(isPaused)
return;
if(run_count < div_by){
$display.text(speed * run_count);
run_count++;
} else if(parseInt($display.text()) < count) {
var curr_count = parseInt($display.text()) + 1;
$display.text(curr_count);
} else {
clearInterval(int);
}
}, int_speed);
}
document.onkeydown = function() {
switch (window.event.keyCode) {
case 37:
isPaused = true;
break;
}
}
document.onkeyup = function() {
switch (window.event.keyCode) {
case 37:
isPaused=false;
break;
}
}
我没有深入研究你所有的变量,所以我不确定还有什么可以删除,但这是一个解决方案。
问题是你的keydown被击中了,但它对间隔运行的countUp函数没有影响,因为它只影响局部变量,而countUp只使用局部变量..
我添加了一个在keydown上设置并在keyup上取消设置的bool,并在运行时间间隔时检查了这个bool的值。
另外,我将count元素更改为ID而不是类。当只有一个这个项时使用ID,如果有很多则使用class。