Код работает хорошо , но я уверен, что есть более эффективный способ сделать это.На данный момент он работает нормально в Firefox, но разваливается в Chrome.Логические значения проверяются на каждом шаге, которые находятся на расстоянии 110 мсек, и результат, является ли элемент в массиве истинным или ложным, определяет, запущен звук или нет (уникально для этого массива).Что-то в коде складывается при скачках в Chrome, что вызывает все виды сбоев и утечек ... Я не могу найти способ объединить все это в одну проверку в каждом цикле, вместо того, чтобы выполнять все эти if
заявления.Возможно ли это?
var loop = [{
"sound": "one",
"pattern": [true, false, false, false],
"volume": 100
},{
"sound": "two",
"pattern": [false, true, false, true],
"volume": 100
},{
"sound": "three",
"pattern": [true, true, true, true],
"volume": 100
}]
var s = 0;
function startLoop(){
if (playing === true){
setTimeout(function(){
if (typeof loop[0] !== "undefined") {
if (loop[0].pattern[s] === true){
soundset.play(loop[0].sound);
}
}
if (typeof loop[1] !== "undefined") {
if (loop[1].pattern[s] === true){
soundset.play(loop[1].sound);
}
}
if (typeof loop[2] !== "undefined") {
if (loop[2].pattern[s] === true){
soundset.play(loop[2].sound);
}
}
s++;
if (s < loop[0].pattern.length){
startLoop();
} else {
s = 0;
startLoop();
}
}, 110)
} else {return;}
};
typeof loop[x] !== "undefined"
на месте, если петли выше x
отсутствуют.План состоял в том, чтобы примерно 10 из них работали, но этот способ проверки каждого шага требует только трех.