@@ -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.создать(); | |||||
} |
@@ -11,4 +11,5 @@ | |||||
// Запустить. | // Запустить. | ||||
мир.физика.создать(); | мир.физика.создать(); | ||||
мир.столкновения.создать(); | мир.столкновения.создать(); | ||||
мир.звуки = new Звуки(мир.ключники, мир.события); | |||||
мир.обновить(); | мир.обновить(); |
@@ -414,11 +414,6 @@ function ПодкидываниеСтрелы() { | |||||
мир.подкидываниеСтрелы = new ПодкидываниеСтрелы(); | мир.подкидываниеСтрелы = new ПодкидываниеСтрелы(); | ||||
мир.подкидываниеСтрелы.завершить = function() { | мир.подкидываниеСтрелы.завершить = function() { | ||||
мир.подкидываниеСтрелы = null; | мир.подкидываниеСтрелы = null; | ||||
/**/var audio = new Audio("р/звуки/543927__eminyildirim__pistol-gun-cocking.wav"); | |||||
/**/audio.play(); | |||||
/**/console.debug("воспроизвели аудио"); | |||||
}; | }; | ||||
@@ -431,7 +426,7 @@ function ОтладкаСобытий() { | |||||
this.обработатьСобытие = function(событие) { | this.обработатьСобытие = function(событие) { | ||||
if (событие == "закинули стрелу") | if (событие == "закинули стрелу") | ||||
{ | { | ||||
console.debug("событие", событие); | |||||
//console.debug("событие", событие); | |||||
} | } | ||||
}; | }; | ||||
@@ -60,6 +60,7 @@ | |||||
<script src="320.игрок.js"></script> | <script src="320.игрок.js"></script> | ||||
<script src="340.слежение.js"></script> | <script src="340.слежение.js"></script> | ||||
<script src="360.маскиПрыжков.js"></script> | <script src="360.маскиПрыжков.js"></script> | ||||
<script src="380.звуки.js"></script> | |||||
<script src="400.столкновения.js"></script> | <script src="400.столкновения.js"></script> | ||||
<script src="700.пуск.js"></script> | <script src="700.пуск.js"></script> | ||||
<script src="800.пример.json.js"></script> | <script src="800.пример.json.js"></script> | ||||