Files
mjs/380.звуки.js

66 lines
2.1 KiB
JavaScript

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.создать();
}