Create a new Sound Component.
The ComponentSystem that created this component.
The entity that the Component is attached to.
The Entity that this Component is attached to.
The ComponentSystem used to create this Component.
Determines which algorithm to use to reduce the volume of the sound as it moves away from the listener. Can be:
Defaults to DISTANCE_LINEAR.
Enables or disables the component.
The maximum distance from the listener at which audio falloff stops. Note the volume of the audio is not 0 after this distance, but just doesn't fall off anymore. Defaults to 10000.
The pitch modifier to play the audio with. Must be larger than 0.01. Defaults to 1.
If true the audio will play back at the location of the Entity in space, so the audio will be affected by the position of the AudioListenerComponent. Defaults to true.
The reference distance for reducing volume as the sound source moves further from the listener. Defaults to 1.
The factor used in the falloff equation. Defaults to 1.
A dictionary that contains the SoundSlots managed by this SoundComponent.
The volume modifier to play the audio with. In range 0-1. Defaults to 1.
Private
_getPrivate
Return a property from the slot with the specified name.
The name of the SoundSlot to look for.
The name of the property to look for.
The value from the looked property inside the slot with specified name. May be undefined if slot does not exist.
Private
_updatePrivate
Update the specified property on all sound instances.
The name of the SoundInstance property to update.
The value to set the property to.
True if the value is a factor of the slot property or false if it is an absolute value.
Creates a new SoundSlot with the specified name.
The name of the slot.
Optional
options: { Settings for the slot.
The asset id of the audio asset that is going to be played by this slot.
If true the slot will start playing as soon as its audio asset is loaded. Defaults to false.
The duration of the sound that the slot will play
starting from startTime. Defaults to null
which means play to end of the sound.
If true the sound will restart when it reaches the end. Defaults to false.
If true then sounds played from slot will be played independently of each other. Otherwise the slot will first stop the current sound before starting the new one. Defaults to false.
The relative pitch. Defaults to 1 (plays at normal pitch).
The start time from which the sound will start playing. Defaults to 0 to start at the beginning.
The playback volume, between 0 and 1. Defaults to 1.
The new slot or null if the slot already exists.
// get an asset by id
const asset = app.assets.get(10);
// add a slot
this.entity.sound.addSlot('beep', {
asset: asset
});
// play
this.entity.sound.play('beep');
Fire an event, all additional arguments are passed on to the event listener.
Name of event to fire.
Optional
arg1: anyFirst argument that is passed to the event handler.
Optional
arg2: anySecond argument that is passed to the event handler.
Optional
arg3: anyThird argument that is passed to the event handler.
Optional
arg4: anyFourth argument that is passed to the event handler.
Optional
arg5: anyFifth argument that is passed to the event handler.
Optional
arg6: anySixth argument that is passed to the event handler.
Optional
arg7: anySeventh argument that is passed to the event handler.
Optional
arg8: anyEighth argument that is passed to the event handler.
Self for chaining.
obj.fire('test', 'This is the message');
Test if there are any handlers bound to an event name.
The name of the event to test.
True if the object has handlers bound to the specified event name.
obj.on('test', function () { }); // bind an event to 'test'
obj.hasEvent('test'); // returns true
obj.hasEvent('hello'); // returns false
Returns true if the asset of the slot with the specified name is loaded..
The name of the SoundSlot to look for.
True if the slot with the specified name exists and its asset is loaded.
Returns true if the slot with the specified name is currently paused.
The name of the SoundSlot to look for.
True if the slot with the specified name exists and is currently paused.
Returns true if the slot with the specified name is currently playing.
The name of the SoundSlot to look for.
True if the slot with the specified name exists and is currently playing.
Returns true if the slot with the specified name is currently stopped.
The name of the SoundSlot to look for.
True if the slot with the specified name exists and is currently stopped.
Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.
Optional
name: stringName of the event to unbind.
Optional
callback: HandleEventCallbackFunction to be unbound.
Optional
scope: objectScope that was used as the this when the event is fired.
Self for chaining.
const handler = function () {
};
obj.on('test', handler);
obj.off(); // Removes all events
obj.off('test'); // Removes all events called 'test'
obj.off('test', handler); // Removes all handler functions, called 'test'
obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this
Attach an event handler to an event.
Name of the event to bind the callback to.
Function that is called when event is fired. Note the callback is limited to 8 arguments.
Optional
scope: object = ...Object to use as 'this' when the event is fired, defaults to current this.
Can be used for removing event in the future.
obj.on('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
const evt = obj.on('test', function (a, b) {
console.log(a + b);
});
// some time later
evt.off();
Attach an event handler to an event. This handler will be removed after being fired once.
Name of the event to bind the callback to.
Function that is called when event is fired. Note the callback is limited to 8 arguments.
Optional
scope: object = ...Object to use as 'this' when the event is fired, defaults to current this.
obj.once('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
obj.fire('test', 1, 2); // not going to get handled
Pauses playback of the slot with the specified name. If the name is undefined then all slots currently played will be paused. The slots can be resumed by calling SoundComponent#resume.
Optional
name: stringThe name of the slot to pause. Leave undefined to pause everything.
// pause all sounds
this.entity.sound.pause();
// pause a specific sound
this.entity.sound.pause('beep');
Begins playing the sound slot with the specified name. The slot will restart playing if it is already playing unless the overlap field is true in which case a new sound will be created and played.
The name of the SoundSlot to play.
The sound instance that will be played. Returns null if the component or its parent entity is disabled or if the SoundComponent has no slot with the specified name.
// get asset by id
const asset = app.assets.get(10);
// create a slot and play it
this.entity.sound.addSlot('beep', {
asset: asset
});
this.entity.sound.play('beep');
Removes the SoundSlot with the specified name.
The name of the slot.
// remove a slot called 'beep'
this.entity.sound.removeSlot('beep');
Resumes playback of the sound slot with the specified name if it's paused. If no name is specified all slots will be resumed.
Optional
name: stringThe name of the slot to resume. Leave undefined to resume everything.
// resume all sounds
this.entity.sound.resume();
// resume a specific sound
this.entity.sound.resume('beep');
Stops playback of the sound slot with the specified name if it's paused. If no name is specified all slots will be stopped.
Optional
name: stringThe name of the slot to stop. Leave undefined to stop everything.
// stop all sounds
this.entity.sound.stop();
// stop a specific sound
this.entity.sound.stop('beep');
Static
EVENT_Fired when a sound instance stops playing because it reached its end. The handler is passed the SoundSlot and the SoundInstance that ended.
entity.sound.on('end', (slot, instance) => {
console.log(`Sound ${slot.name} ended`);
});
Static
EVENT_Fired when a sound instance is paused. The handler is passed the SoundSlot and the SoundInstance that was paused.
entity.sound.on('pause', (slot, instance) => {
console.log(`Sound ${slot.name} paused`);
});
Static
EVENT_Fired when a sound instance starts playing. The handler is passed the SoundSlot and the SoundInstance that started playing.
entity.sound.on('play', (slot, instance) => {
console.log(`Sound ${slot.name} started playing`);
});
Static
EVENT_Fired when a sound instance is resumed. The handler is passed the SoundSlot and the SoundInstance that was resumed.
entity.sound.on('resume', (slot, instance) => {
console.log(`Sound ${slot.name} resumed`);
});
Static
EVENT_Fired when a sound instance is stopped. The handler is passed the SoundSlot and the SoundInstance that was stopped.
entity.sound.on('stop', (slot, instance) => {
console.log(`Sound ${slot.name} stopped`);
});
The Sound Component controls playback of Sounds.