2015-07-14 2 views
0

Я использую mySound для воспроизведения звука в зависимости от того, выполнено ли определенное условие. У меня проблема, когда звуки играют друг над другом, даже когда условия не выполняются. вот мой код какие-нибудь идеи?звуки продолжают играть друг на друга

Game.countAnimals = function(playerGo) { 
    var count = {bulls:0, cows:0}; 
    Game.counter = 1; 
    for (var i = 0; i < playerGo.length; i++) { 
    var digPresent = playerGo.indexOf(Game.score[i]); 
    if (playerGo[i] == Game.score[i]) { 
     count.bulls++; 
    } 
    else if (digPresent>=0) { 
     count.cows++; 
    } 
    Game.counter++ 
    if (count.bulls === playerGo.length && Game.counter < 7){ 
     mySound2 = new Audio("sounds/Freedom%20Tastes%20Good.mp3"); 
     mySound2.play(); 
    } 
    else if (count.bulls !== playerGo.length && Game.counter < 7) { 
     mySound1 = new Audio("sounds/Ass%20is%20dead.mp3"); 
     mySound1.play(); 
    } 
    else if (Game.counter > 7){ 
     mySound = new Audio("sounds/Kill%20You%20Dog.mp3"); 
     mySound.play(); 
    } 

ответ

0

Вы должны остановить все остальные звуки перед тем, как играть в новую. Кроме того, не создавайте звуки в функции, когда это необходимо - у вас есть только три звука, поэтому создавайте их при загрузке страницы вне функции.

Так неподвижная сниппет должен выглядеть примерно так:

var mySound = new Audio("sounds/Kill%20You%20Dog.mp3"); 
var mySound1 = new Audio("sounds/Ass%20is%20dead.mp3"); 
var mySound2 = new Audio("sounds/Freedom%20Tastes%20Good.mp3"); 
Game.countAnimals = function(playerGo) { 
    var count = {bulls:0, cows:0}; 
    Game.counter = 1; 
    for (var i = 0; i < playerGo.length; i++) { 
    var digPresent = playerGo.indexOf(Game.score[i]); 
    if (playerGo[i] == Game.score[i]) { 
     count.bulls++; 
    } 
    else if (digPresent>=0) { 
     count.cows++; 
    } 
    Game.counter++ 
    if (count.bulls === playerGo.length && Game.counter < 7){ 
     stopAllSounds(); 
     mySound2.play(); 
    } 
    else if (count.bulls !== playerGo.length && Game.counter < 7) { 
     stopAllSounds(); 
     mySound1.play(); 
    } 
    else if (Game.counter > 7){ 
     stopAllSounds(); 
     mySound.play(); 
    } 

function stopAllSounds() { 
    mySound.pause(); 
    mySound1.pause(); 
    mySound2.pause(); 
    // rewind them 
    mySound.currentTime = 0; 
    mySound1.currentTime = 0; 
    mySound2.currentTime = 0; 
}