UNPKG

jsge

Version:

Javascript Game Engine

146 lines (121 loc) 5.59 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="expires" content="Wen, 05 Jun 2024 07:01:00 GMT"> <title>JSDoc: Source: base/ISystemAudio.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="stage-title">Source: base/ISystemAudio.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>import AssetsManager from "../../modules/assetsm/src/AssetsManager.js"; import { WARNING_CODES } from "../constants.js"; import { Warning } from "./Exception.js"; /** * An audio interface, &lt;br> * controls all application audio,&lt;br> * holds and retrieves audio, changes volume&lt;br> * accessible via GameStage.audio * @see {@link GameStage} a part of GameStage * @hideconstructor */ export class ISystemAudio { #volume = 0.5; #audio = new Map(); /** * @type {AssetsManager} */ #loaderReference; constructor(iLoader) { this.#loaderReference = iLoader; } /** * Original track * @param {string} name * @returns {HTMLAudioElement | null} */ getAudio = (name) => { const audio = this.#audio.get(name); if (audio === null) { Warning(WARNING_CODES.AUDIO_NOT_LOADED, "Audio with key " + name + " exists, but not actually loaded"); return audio; } if (audio) { return audio; } else { Warning(WARNING_CODES.AUDIO_NOT_REGISTERED, ""); return null; } }; /** * Clone of original track * @param {string} name * @returns {HTMLAudioElement | null} */ getAudioCloned = (name) => { const audio = this.#audio.get(name); if (audio === null) { Warning(WARNING_CODES.AUDIO_NOT_LOADED, "Audio with key " + name + " exists, but not actually loaded"); return audio; } if (audio) { const audioCloned = audio.cloneNode(); audioCloned.volume = this.#volume; return audioCloned; } else { Warning(WARNING_CODES.AUDIO_NOT_REGISTERED); return null; } }; set volume(value) { this.#volume = value; this.#updateTracksVolumes(value); } /** * Used to set or get audio volume, * value should be from 0 to 1 * @returns {number} */ get volume() { return this.#volume; } #updateTracksVolumes(value) { for (const track of this.#audio.values()) { if (track) { track.volume = value; } } } /** * Register audio in the iSystem * @param {string} name */ registerAudio(name) { let mediaElement = this.#loaderReference.getAudio(name); this.#audio.set(name, mediaElement); } }</code></pre> </article> </section> </div> <nav> <div class="switcher"><ul><li class="active"><a href="/">1.5.9</a></li></div> <h2><a href="/">Home</a></h2><h3>Classes</h3><ul><li><a href="DrawCircleObject.html">DrawCircleObject</a></li><li><a href="DrawConusObject.html">DrawConusObject</a></li><li><a href="DrawImageObject.html">DrawImageObject</a></li><li><a href="DrawLineObject.html">DrawLineObject</a></li><li><a href="DrawObjectFactory.html">DrawObjectFactory</a></li><li><a href="DrawPolygonObject.html">DrawPolygonObject</a></li><li><a href="DrawRectObject.html">DrawRectObject</a></li><li><a href="DrawShapeObject.html">DrawShapeObject</a></li><li><a href="DrawTextObject.html">DrawTextObject</a></li><li><a href="DrawTiledLayer.html">DrawTiledLayer</a></li><li><a href="GameStage.html">GameStage</a></li><li><a href="GameStageData.html">GameStageData</a></li><li><a href="IExtension.html">IExtension</a></li><li><a href="INetwork.html">INetwork</a></li><li><a href="IRender.html">IRender</a></li><li><a href="ISystem.html">ISystem</a></li><li><a href="ISystemAudio.html">ISystemAudio</a></li><li><a href="RenderLoop.html">RenderLoop</a></li><li><a href="RenderLoopDebug.html">RenderLoopDebug</a></li><li><a href="System.html">System</a></li><li><a href="SystemSettings.html">SystemSettings</a></li></ul><h3>Tutorials</h3><ul><li><a href="tutorial-application_scheme.html">Application Scheme</a></li><li><a href="tutorial-assets_manager.html">Assets Manager</a></li><li><a href="tutorial-common_issues.html">Common Issues</a></li><li><a href="tutorial-how_to_add_and_use_audio.html">How to add and use audio</a></li><li><a href="tutorial-how_to_do_animations.html">How to Create Animations</a></li><li><a href="tutorial-how_to_load_and_use_tilemaps.html">How to Load and Use Tilemaps</a></li><li><a href="tutorial-quick_start.html">Quick Start</a></li><li><a href="tutorial-spine_animations.html">How to Add Spine Animations</a></li><li><a href="tutorial-stages_lifecycle.html">Stages Lifecycle</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.4</a> on Wed Jun 18 2025 06:53:54 GMT+0000 (Coordinated Universal Time) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>