Я создаю пианино в браузере, используя javascript. Для того, чтобы я играл один и тот же ключ несколько раз одновременно, вместо того, чтобы просто воспроизводить объект Audio, я клонировал его и воспроизводил клон, в противном случае мне пришлось бы дождаться завершения звука или перезапустить его, я хочу.Клонирование источника аудио, не загружая его снова
Я сделал что-то вроде этого:
var audioSrc = new Audio('path/');
window.onkeypress = function(event) {
var currentAudioSrc = audioSrc.cloneNode();
currentAudioSrc.play();
}
Проблема, я проверял инспектор хром, и я заметил, что каждый раз, когда я клонировать объект, браузер загрузить его снова
Я проверил некоторых людей, которые хотели достичь аналогичных вещей, и заметил, что большинство из них имеют ту же проблему, что и я, они перезагружают файл. Единственный пример, который я нашел, который может воспроизводить один и тот же источник звука несколько раз одновременно, - SoundJs http://www.createjs.com/SoundJS
Я попытался проверить источник, но не мог понять, как это было сделано. Есть идеи?
Да, я вижу, как это будет трудно отследить, если вы не знакомы с архитектурой SoundJS. WebAudioLoader._sendComplete декодирует загруженный файл в AudioBuffer, который затем передается как _result, который обрабатывается в AbstractPlugin._handlePreloadComplete, сохраняя его в хэшировании _audioSources (WebAudioPlugin расширяет AbstractPlugin). Этот сохраненный AudioBuffer затем передается каждому новому WebAudioSoundInstance и используется для создания аудиоузлов. Его та же идея, что и принятый ответ, хранит звуковой буфер и использует его для создания новых аудиоузлов. – OJay