Javascript 如何在while循环中运行一次代码
如何在循环中运行代码一次,但循环其余代码?我有一个GIF,按下空格键,它会变成移动的、行走的GIF。但它可能只运行前3帧,然后停止,然后在发布时变为空闲GIF,这是正确的。这只是行走序列,我猜是因为它在循环代码。任何帮助都将不胜感激Javascript 如何在while循环中运行一次代码,javascript,Javascript,如何在循环中运行代码一次,但循环其余代码?我有一个GIF,按下空格键,它会变成移动的、行走的GIF。但它可能只运行前3帧,然后停止,然后在发布时变为空闲GIF,这是正确的。这只是行走序列,我猜是因为它在循环代码。任何帮助都将不胜感激 window.addEventListener("keydown", function(event){ if (event.defaultPrevented){ return; //do nothing if already process
window.addEventListener("keydown", function(event){
if (event.defaultPrevented){
return; //do nothing if already processed
}
while (event.key === " "){
window.scrollBy(10,0);
break;
}
sprite.src = "images/sprite/walk.gif";
event.preventDefault(); //cancel default action to prevent it being handled twice.
})
window.addEventListener("keyup", function(event){
if (event.defaultPrevented){
return; //do nothing if already processed
}
while (event.key === " "){
sprite.src = "images/sprite/idle.gif";
break;
}
event.preventDefault(); //cancel default action to prevent it being handled twice.
})
所以,简而言之,我只想让一些代码在while循环中运行一次。行走顺序的问题,是因为每次触发事件时,您都会设置图像,即使图像已经设置!因此,我在分配前添加了一个检查条件 以下是经过轻微修改/改进的代码示例: HTML:
<img id="imgAnimated" src="http://cdn.osxdaily.com/wp-content/uploads/2013/07/dancing-banana.gif" />
window.addEventListener("keydown", function(event){
if (event.defaultPrevented){
return;
}
if (event.key === " " && $("#imgAnimated").attr("src") != "http://i.imgur.com/JfkmXjG.gif"){
$("#imgAnimated").attr("src", "http://i.imgur.com/JfkmXjG.gif");
} else return;
event.stopPropagation();
})
window.addEventListener("keyup", function(event){
if (event.defaultPrevented){
return;
}
if (event.key === " "){
$("#imgAnimated").attr("src", "http://cdn.osxdaily.com/wp-content/uploads/2013/07/dancing-banana.gif");
}
event.stopPropagation();
})
以下是JSFIDLE:
欢迎来到StackOverflow。请阅读我们的页面,了解如何改进您的问题。伟大的问题往往能从社区中提供更快、更好的答案
while
循环的意义何在?总是中断的while()
只是一个if()
。为什么要对运行一次的代码使用循环?如果要防止事件冒泡,使用event.stopPropagation()
,而不是event.preventDefault()
。