javascript:我的声音只播放一次?

标签 javascript html css audio

我为我的游戏制作了一项名为 Blitz 的技能。它的功能是在 6 秒内攻击对手 3 次。

我在技能中添加了声音文件,这样你就可以听到你所做的事情的提示,这样你就不必阅读文本日志了。但我遇到的问题是,当我击中对手 2 次或更多次时,声音文件只播放一次,而不是两次。

例如:这有效 - 命中,未命中,命中。 例如:这不起作用 - Hit,Hit(无声音),Miss(声音)

为什么会跳过或不播放?

// BLITZ SKILL 

document.getElementById("blitz").addEventListener('click', function() {
    atbReset();
    DB();
    RET();
    window.setTimeout(function() { blitzskill() }, 1000);
    window.setTimeout(function() { blitzskill() }, 2000);
    window.setTimeout(function() { blitzskill() }, 3000);
});

function blitzskill(){
    var criticalRoll = Math.floor(Math.random() * 100 + 1);
    var precisionRoll = Math.floor(Math.random() * cs.precision + 1);
    var npcParryRoll = Math.floor(Math.random() * ds.parry + 1);
    var damage = Math.floor(Math.random() * cs.strength * 1);

        if (character.energy <= 4) {
            addMessage("Not enough energy!")    
            return;
            }
        if (precisionRoll < npcParryRoll) {
            addMessage("The Dragon evaded your attack!");
            character.energy -= 5;
            miss.play(); // PLAY MISS SOUND
            }
        else if (damage - ds.armor <= 0) {
            character.energy -= 5;
            addMessage("Your opponents armor withstood your attack!");
            armor.play(); // PLAY MISS/ARMOR SOUND
            }   
        else if (cs.critical >= criticalRoll) {
            damage *= 2;
            damage -= ds.armor;
            dragon.hp -= damage;
            character.energy -= 5;
            document.getElementById("npchp").innerHTML = dragon.hp;
            addMessage("Critical Strike! Dragon suffers " + damage + " hp!")
            swoosh.play(); // PLAY HIT SOUND
            }   
        else {  
            dragon.hp -= damage;
            damage -= ds.armor;
            document.getElementById("npchp").innerHTML = dragon.hp;
            addMessage("You hit the dragon for " + damage + " hp!");
            character.energy -= 5;
            swoosh.play(); // PLAY HIT SOUND
            }
            document.getElementById("energy").innerHTML = character.energy;
};

最佳答案

试试这个:

swoosh.pause();// ensure sound is not already playing 
swoosh.currentTime = 0; //reset time
swoosh.play(); // PLAY HIT SOUND

我所做的只是添加逻辑以确保您在声音开始时调用播放

关于javascript:我的声音只播放一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613081/

相关文章:

javascript - 删除 id 或 class 但保留样式

javascript - 如何将随机大小的图像排列成等长的行?

css - GWT - DockLayoutPanel 没有按预期工作

html - css: 模拟一个 "min-top"属性

javascript 无法与 HTML 正确链接。怎么修?

javascript - JavaScript 中的日期和时间

javascript - HTML 中的 JS 时间显示单位数分钟

javascript - 在 javascript 问题中应用复合 css 规则

javascript - 为什么 Math.random() 不断更新 onClick?

javascript - NodeJS 中的流