Javascript 在两次风格变化之间睡觉
我正在用Javascript做一个Simon游戏。我希望当我显示颜色序列时,做一个睡眠,然后我将不透明度更改为0.3,然后再次睡眠,并将颜色的不透明度更改为1。 但是当我尝试时,它不睡觉,只在我发出警报或暂停执行时等待 我的代码是:Javascript 在两次风格变化之间睡觉,javascript,html,css,Javascript,Html,Css,我正在用Javascript做一个Simon游戏。我希望当我显示颜色序列时,做一个睡眠,然后我将不透明度更改为0.3,然后再次睡眠,并将颜色的不透明度更改为1。 但是当我尝试时,它不睡觉,只在我发出警报或暂停执行时等待 我的代码是: for(x = 0; x < cicleCount.length; x++) { cicleCount[x] = colors[Math.floor((Math.random() * colors.length))]; sleep(1000);
for(x = 0; x < cicleCount.length; x++) {
cicleCount[x] = colors[Math.floor((Math.random() * colors.length))];
sleep(1000);
document.getElementById(cicleCount[x]).style.opacity = 1;
sleep(1000);
document.getElementById(cicleCount[x]).style.opacity = 0.3;
}
(x=0;x{
ciclecont[x]=colors[Math.floor((Math.random()*colors.length));
睡眠(1000);
document.getElementById(cicleCount[x]).style.opacity=1;
睡眠(1000);
document.getElementById(cicleCount[x]).style.opacity=0.3;
}
My sleep()函数:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
函数睡眠(毫秒){
var start=new Date().getTime();
对于(变量i=0;i<1e7;i++){
如果((新日期().getTime()-start)>毫秒){
打破
}
}
}
我也尝试使用setTimeout(),但它不起作用,它只是不停地执行所有代码。这不是浏览器环境中的工作方式。在执行Javascript函数期间,浏览器显示将不会刷新 此外,在一段JavaScript代码中“睡眠”基本上会冻结页面。在代码执行完毕之前,浏览器不会对用户输入或其他事件做出响应,这极有可能会惹恼浏览者 您必须使用计时器使更改可见,以便在不同的计时器调用之间更新页面。您使用sleep()的方法被调用,这不是一个好主意,因为它会导致不必要的CPU负载,对于JavaScript,它会阻塞UI线程 如果您需要,则在设定的时间后运行回调(函数) 如果没有看到您在Window.setTimeout上的失败尝试,我将无法提供有关该操作失败原因的更多信息。请更新您的问题 不过,我想您最好使用window.setInterval()和某种时钟,然后可以使用它来增加透明度。在下面的代码中,如果我做对了,x应该按顺序0,0,1,1,2,直到(ciclecont.length-1),不透明度应该切换为1,0.3,1,0.3等等
var clock = 0;
var tick = function() {
var x = (clock / 2) % cicleCount.length;
cicleCount[x] = colors[Math.floor((Math.random() * colors.length))];
if (clock % 2 == 0) {
document.getElementById(cicleCount[x]).style.opacity = 1;
} else {
document.getElementById(cicleCount[x]).style.opacity = 0.3;
}
clock++;
};
var timer = window.setInterval(tick, 1000);
如果以后需要停止动画,请使用以下命令
window.clearInterval(timer);
您可以使用setTimeout函数执行此操作:-
window.setTimeout(function(){
document.getElementById(cicleCount[x]).style.opacity = 1;
},1000);
window.setTimeout(function(){
document.getElementById(cicleCount[x]).style.opacity = 0.3;
},2000);
你能把所有的密码都贴出来吗?html etcIt也可以工作,不是我想要的方式,但我可以对它进行修改,谢谢。@Raxkin不用担心,很乐意帮助。