|
|
@@ -0,0 +1,65 @@ |
|
|
|
function Звуки(ключники, события) { |
|
|
|
this.создать = function() { |
|
|
|
this.задано = {}; |
|
|
|
this.загружено = {}; |
|
|
|
события.подписать(this); |
|
|
|
var тут = this; |
|
|
|
ключники.push(function(ключ, путь, значение) { |
|
|
|
тут.обработатьКлюч(ключ, путь, значение); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьКлюч = function(ключ, путь, значение) { |
|
|
|
if (!путь[0].startsWith("звуки")) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
var имя = путь[1]; |
|
|
|
var свойство = путь.slice(2).join("."); |
|
|
|
|
|
|
|
if (!this.задано[имя]) |
|
|
|
{ |
|
|
|
this.задано[имя] = {}; |
|
|
|
} |
|
|
|
this.задано[имя][свойство] = значение; |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьСобытие = function(событие) { |
|
|
|
for (var имя in this.задано) |
|
|
|
{ |
|
|
|
var значения = this.задано[имя]; |
|
|
|
if (!значения.файл) |
|
|
|
{ |
|
|
|
continue; |
|
|
|
} |
|
|
|
for (var свойство in значения) |
|
|
|
{ |
|
|
|
if (свойство.startsWith("события")) |
|
|
|
{ |
|
|
|
var значение = значения[свойство]; |
|
|
|
if (событие == значение) |
|
|
|
{ |
|
|
|
this.воспроизвести(значения.файл); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.воспроизвести = function(файл) |
|
|
|
{ |
|
|
|
if (!this.загружено[файл]) |
|
|
|
{ |
|
|
|
this.загружено[файл] = new Audio(файл); |
|
|
|
} |
|
|
|
var звук = this.загружено[файл]; |
|
|
|
звук.pause(); |
|
|
|
звук.currentTime = 0; |
|
|
|
звук.play(); |
|
|
|
}; |
|
|
|
|
|
|
|
// Конструктор. |
|
|
|
this.создать(); |
|
|
|
} |