Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 不需要的声音循环_Javascript_Loops_Audio - Fatal编程技术网

Javascript 不需要的声音循环

Javascript 不需要的声音循环,javascript,loops,audio,Javascript,Loops,Audio,这将调用收集器,该收集器运行以下操作: setInterval(collector, 1000/FPS); 在inputinterval中,有一段代码确定用户是否正在拖动某些东西。默认情况下,他是,但按空格键会从鼠标指针中删除元素。现在,这将是有趣的声音,所以我做了以下测试的声音: function collector(){ inputinterval(); draw(); soundplay(); //DEBUG FEATURES BELOW //co

这将调用收集器,该收集器运行以下操作:

setInterval(collector, 1000/FPS);
inputinterval
中,有一段代码确定用户是否正在拖动某些东西。默认情况下,他是,但按空格键会从鼠标指针中删除元素。现在,这将是有趣的声音,所以我做了以下测试的声音:

function collector(){
    inputinterval();
    draw();
    soundplay();
    //DEBUG FEATURES BELOW
    //console.log(mousepos);
    //console.log(mousedrag);
}
我现在已经把它注释掉了,因为即使没有按下鼠标按钮,它也会循环

鼠标标记在输入函数中确定:

//SOUND
//function soundplay(){
//  if (!(mousedrag)){
//      snd_putdown.play();
//  };
//};
现在被键盘输入取代,因为我的鼠标按钮也不工作。此代码位是在收集器中调用的、由setInterval函数调用的
inputinterval()
的一部分。这会造成巨大的循环。我该如何处理声音,使其不属于循环的一部分,但对用户丢弃的东西做出响应(并将其拾起>丢弃>等等)

提前谢谢


编辑:嗯,我现在跳过了整个零件的删除,选择改变设计,而不是因为这样的事情而伤脑筋。我仍然想知道如何做到这一点,但现在它可以没有。在这里可以看到进展,还有来源,还有什么没有:koewaffle.koding.com/pcgametest/index.html。

回顾这一点,我的错误真的很愚蠢。然而,作为初学者,我们都会犯这样的错误。要播放,您应该检查当前按键状态是否为“向上”(false),上一个按键状态是否为“向下”(true)。换言之:检查按键,而不是按键事件,因为每一帧它都会检查你的键盘,而你没有按住那个键,它会再次播放声音。。。再一次。。。
if (event.keyCode == 65) {
    mousedrag = true;
}
if (event.keyCode == 83) {
    mousedrag = false;
}