UNPKG

@beetpx/beetpx

Version:

A TypeScript framework for pixel art browser games.

35 lines 1.32 kB
import { AudioPlayback } from "./AudioPlayback"; export class AudioPlaybackOnce extends AudioPlayback { id = AudioPlayback.nextPlaybackId++; type = "once"; #soundAsset; #sourceNode; constructor(soundUrl, params) { super(params.audioContext, params.target, params.muteOnStart, params.onGamePause, params.onEnded); this.#soundAsset = params.assets.getSoundAsset(soundUrl); this.#sourceNode = this.createSourceNode(); this.setupAndStartNodes(); } stopAllNodes() { this.#sourceNode.stop(); } setupAndStartNodes() { if (this.pausedAtMs != null) { this.#sourceNode = this.createSourceNode(); } this.#sourceNode.buffer = this.#soundAsset.audioBuffer; this.connectToMainGainNode(this.#sourceNode); this.#sourceNode.addEventListener("ended", () => { this.#sourceNode.disconnect(); this.disconnectFromOutput(); if (!this.isPausedByGame && !this.isPausedByFramework) { this.onEnded(); } }); const offsetMs = this.pausedAtMs ? this.pausedAtMs - this.startedAtMs - this.accumulatedPauseMs : 0; this.#sourceNode.start(0, offsetMs / 1000); } } //# sourceMappingURL=AudioPlaybackOnce.js.map