package kha.js; import js.html.AudioElement; import kha.audio1.AudioChannel; class AEAudioChannel implements kha.audio1.AudioChannel { var element: AudioElement; var stopped = false; var looping: Bool; public function new(element: AudioElement, looping: Bool) { this.element = element; this.looping = looping; } public function play(): Void { stopped = false; element.play(); } public function pause(): Void { try { element.pause(); } catch (e:Dynamic) { trace(e); } } public function stop(): Void { try { element.pause(); element.currentTime = 0; stopped = true; } catch (e:Dynamic) { trace(e); } } public var length(get, never): Float; // Seconds function get_length(): Float { if (Math.isFinite(element.duration)) { return element.duration; } else { return Math.POSITIVE_INFINITY; } } public var position(get, set): Float; // Seconds function get_position(): Float { return element.currentTime; } function set_position(value: Float): Float { return element.currentTime = value; } public var volume(get, set): Float; function get_volume(): Float { return element.volume; } function set_volume(value: Float): Float { return element.volume = value; } public var finished(get, never): Bool; function get_finished(): Bool { return stopped || (!looping && position >= length); } }