mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2024-12-23 14:32:59 -05:00
Fix music extension asset loading on safari
This commit is contained in:
parent
cc1923f982
commit
4778ab8d4f
1 changed files with 16 additions and 3 deletions
|
@ -97,10 +97,23 @@ class Scratch3MusicBlocks {
|
|||
_loadSound (fileName, index, bufferArray) {
|
||||
if (!this.runtime.storage) return;
|
||||
if (!this.runtime.audioEngine) return;
|
||||
if (!this.runtime.audioEngine.audioContext) return;
|
||||
return this.runtime.storage.load(this.runtime.storage.AssetType.Sound, fileName, 'mp3')
|
||||
.then(soundAsset =>
|
||||
this.runtime.audioEngine.audioContext.decodeAudioData(soundAsset.data.buffer)
|
||||
)
|
||||
.then(soundAsset => {
|
||||
const context = this.runtime.audioEngine.audioContext;
|
||||
// Check for newer promise-based API
|
||||
if (context.decodeAudioData.length === 1) {
|
||||
return context.decodeAudioData(soundAsset.data.buffer);
|
||||
} else { // eslint-disable no-else-return
|
||||
// Fall back to callback API
|
||||
return new Promise((resolve, reject) =>
|
||||
context.decodeAudioData(soundAsset.data.buffer,
|
||||
buffer => resolve(buffer),
|
||||
error => reject(error)
|
||||
)
|
||||
);
|
||||
}
|
||||
})
|
||||
.then(buffer => {
|
||||
bufferArray[index] = buffer;
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue