Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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 html5游戏中的音效_Javascript_Html_Html5 Audio - Fatal编程技术网

Javascript html5游戏中的音效

Javascript html5游戏中的音效,javascript,html,html5-audio,Javascript,Html,Html5 Audio,我试着在游戏中用每一次点击来播放音效,但有时会播放声音,而其他的则不会 我正在使用下一个代码: <script> var hitSound = new Audio(); function playEffectSound() { hitSound = document.getElementById('effects'); hitSound.loop = false; hitSound.currentTime = 0; hitSound.pla

我试着在游戏中用每一次点击来播放音效,但有时会播放声音,而其他的则不会

我正在使用下一个代码:

<script>

var hitSound = new Audio();

function playEffectSound()
{
    hitSound = document.getElementById('effects'); 
    hitSound.loop =  false; 
    hitSound.currentTime = 0; 
    hitSound.play();    
}

</script>
    <audio id="effects" hidden>
    <source src="sound/mp3/effect.mp3" type="audio/mpeg">
    <source src="sound/wav/effect.wav" type="audio/wav">
</audio>

有什么想法吗?

您可以使用以下代码播放音频

function playEffectSound(sound) {
    //Does the sound already exist?
    if (document.getElementById(sound) != null) {
        document.getElementById(sound).play();
        return;
    }

    //Create elements
    var audioElement = document.createElement("audio");
    var sourceElement = document.createElement("source");

    sourceElement.src = sound + ".mp3";
    sourceElement.type = "audio/mpeg";

    var sourceElementWave = document.createElement("source");

    sourceElementWave.src = sound + ".wav";
    sourceElementWave.type = "audio/wav";

    //Add sources to audio
    document.body.appendChild(sourceElementWave);
    document.body.appendChild(audioElement);

    audioElement.setAttribute("id", sound);
    audioElement.appendChild(sourceElement);
    audioElement.loop = false;
    audioElement.currentTime = 0;
    audioElement.play();
}

您可以这样使用:playEffectSoundsounds/effect;它将播放sounds/effect.mp3或sounds/effect.wav

您可以使用以下代码播放音频

function playEffectSound(sound) {
    //Does the sound already exist?
    if (document.getElementById(sound) != null) {
        document.getElementById(sound).play();
        return;
    }

    //Create elements
    var audioElement = document.createElement("audio");
    var sourceElement = document.createElement("source");

    sourceElement.src = sound + ".mp3";
    sourceElement.type = "audio/mpeg";

    var sourceElementWave = document.createElement("source");

    sourceElementWave.src = sound + ".wav";
    sourceElementWave.type = "audio/wav";

    //Add sources to audio
    document.body.appendChild(sourceElementWave);
    document.body.appendChild(audioElement);

    audioElement.setAttribute("id", sound);
    audioElement.appendChild(sourceElement);
    audioElement.loop = false;
    audioElement.currentTime = 0;
    audioElement.play();
}

您可以这样使用:playEffectSoundsounds/effect;当您使用音频标签时,它会播放sounds/effect.mp3或sounds/effect.wav

尝试在音频标签之后编写脚本,如果您在音频标签之前编写脚本,则会在播放音频时出现问题

我建议在页面末尾编写脚本,这是编写脚本的标准方法


每当你使用音频标签时,试着在音频标签之后写脚本,如果你在音频标签之前写脚本,它会在播放音频时出现问题

我建议在页面末尾编写脚本,这是编写脚本的标准方法



尝试每次点击添加一个新的var sound和sound.play,它将正常工作

尝试每次点击添加一个新的var sound和sound.play,它将正常工作

您有2个标签,忘记关闭第二个标签?@Cerbrus:第一个标签关闭在哪里?可能是您点击时文件还没有加载。您可以尝试将preload attr添加到audio标记中,但并非所有浏览器都支持它。@musefan,是的,这就是我的意思,第二个标记应该是,您可以指定目标平台吗?您有两个标记,忘记关闭第二个吗?@Cerbrus:第一个标记在哪里关闭?可能是您点击时文件尚未加载。您可以尝试将preload attr添加到audio标记中,但并非所有浏览器都支持它。@musefan,是的,这就是我的意思,第二个标记应该是,您可以指定目标平台吗?谢谢,但每次我们使用它时,它都需要下载声音。。。。。这不是很好的游戏练习。很酷,但不是我需要的:谢谢谢谢你,但每次我们使用它时都需要下载声音。。。。。这不是游戏的好习惯。很酷,但不是我需要的:谢谢你,但这对游戏没有帮助。@Solieman-我知道使用上面的代码不是好习惯,我只是在更正上面给出的代码。使用Sprite's of Sound确实是一个很好的练习。谢谢你,但这对游戏没有帮助。@Solieman-我知道使用上述代码不是一个好的练习,我只是更正了上面给出的代码。使用Sprite的声音是值得遵循的良好实践。尝试添加代码示例,提供参考或来源,或更详细地阐述,以向提问者提供足够的细节来尝试您的建议,或者至少为他们指出正确的方向。尝试添加代码示例,提供参考或来源,或者更详细地阐述,为提问者提供足够的细节来尝试你的建议——或者至少为他们指出正确的方向。