2013-10-26 146 views
0

我製作了一款名爲Blitz的遊戲技巧。其功能是你在6秒內擊中你的對手3次。javascript:我的聲音只播放一次?

我在技巧中添加了聲音文件,因此您可以聽到提示,因此您不必讀取文本日誌。我遇到的問題是,當我擊中對手2次或更多次時,聲音文件只播放一次,而不是兩次。

例如:This Works - Hit,Miss,Hit。 例如:這不起作用 - 打,打(沒有聲音),小姐(聲音)

爲什麼它跳過或不玩?

// 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; 
}; 
+0

你在哪裏得到旋風 - 你可以設置一個小提琴無你的遊戲邏輯代碼 – megawac

+0

swoosh就是我用來擊打對手的聲音文件。我將setTimeOut加到了每個2.5秒,並修復了它,所以它與已經在第二次播放的聲音文件有關。 – Shawn

+0

嗯..那裏有'setTimeout'在那裏做什麼?點擊時,你真的必須打三次「blitzskill」嗎? – aIKid

回答

1

試試這個:

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

我做的是添加邏輯,以確保您撥打發揮作用的聲音開始

+0

我的聲音確實在比賽開始時發揮作用,如果我已經打了第二次,我已經擊中了我的對手,它根本沒有彈奏。 – Shawn

+0

@ user2763154嘗試添加小提琴,因爲這是我可以建議的唯一一件事情,但無法測試案例 – megawac

+0

其實您提供的代碼解決了問題。這是聲音文件已經播放,所以它沒有第二次播放。謝謝先生:) – Shawn