38 lines
951 B
Haxe
38 lines
951 B
Haxe
|
package kha.js;
|
||
|
|
||
|
import haxe.io.Bytes;
|
||
|
import js.html.XMLHttpRequest;
|
||
|
|
||
|
class MobileWebAudioSound extends kha.Sound {
|
||
|
public var _buffer: Dynamic;
|
||
|
|
||
|
public function new(filename: String, done: kha.Sound->Void, failed: AssetError->Void) {
|
||
|
super();
|
||
|
var request = untyped new XMLHttpRequest();
|
||
|
request.open("GET", filename, true);
|
||
|
request.responseType = "arraybuffer";
|
||
|
|
||
|
request.onerror = function() {
|
||
|
failed({url: filename});
|
||
|
};
|
||
|
|
||
|
request.onload = function() {
|
||
|
compressedData = Bytes.ofData(request.response);
|
||
|
uncompressedData = null;
|
||
|
MobileWebAudio._context.decodeAudioData(compressedData.getData(), function(buffer) {
|
||
|
length = buffer.duration;
|
||
|
channels = buffer.numberOfChannels;
|
||
|
_buffer = buffer;
|
||
|
done(this);
|
||
|
}, function() {
|
||
|
failed({url: filename, error: "Audio format not supported"});
|
||
|
});
|
||
|
};
|
||
|
request.send(null);
|
||
|
}
|
||
|
|
||
|
override public function uncompress(done: Void->Void): Void {
|
||
|
done();
|
||
|
}
|
||
|
}
|