Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在while循环中运行一次代码_Javascript - Fatal编程技术网

Javascript 如何在while循环中运行一次代码

Javascript 如何在while循环中运行一次代码,javascript,Javascript,如何在循环中运行代码一次,但循环其余代码?我有一个GIF,按下空格键,它会变成移动的、行走的GIF。但它可能只运行前3帧,然后停止,然后在发布时变为空闲GIF,这是正确的。这只是行走序列,我猜是因为它在循环代码。任何帮助都将不胜感激 window.addEventListener("keydown", function(event){ if (event.defaultPrevented){ return; //do nothing if already process

如何在循环中运行代码一次,但循环其余代码?我有一个GIF,按下空格键,它会变成移动的、行走的GIF。但它可能只运行前3帧,然后停止,然后在发布时变为空闲GIF,这是正确的。这只是行走序列,我猜是因为它在循环代码。任何帮助都将不胜感激

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()