diff --git a/howler/howler-tests.ts b/howler/howler-tests.ts index bdd3a575bd..7b47b73abb 100644 --- a/howler/howler-tests.ts +++ b/howler/howler-tests.ts @@ -1,19 +1,13 @@ -/** - * howler-tests.ts - * Created by xperiments on 02/09/14. - */ - import * as howler from "howler"; -Howler.codecs('ogg'); -Howler.iOSAutoEnable = true; var sound = new Howl({ - urls: ['sound.mp3'] -}).play(); + src: ['sound.mp3'] +}); +sound.play(); var sound = new Howl({ - urls: ['sound.mp3', 'sound.ogg', 'sound.wav'], + src: ['sound.webm', 'sound.mp3', 'sound.wav'], autoplay: true, loop: true, volume: 0.5, @@ -23,7 +17,7 @@ var sound = new Howl({ }); var sound = new Howl({ - urls: ['sounds.mp3', 'sounds.ogg'], + src: ['sounds.webm', 'sounds.mp3'], sprite: { blast: [0, 1000], laser: [2000, 3000], @@ -31,5 +25,32 @@ var sound = new Howl({ } }); -// shoot the laser! +// Shoot the laser! sound.play('laser'); + +var sound = new Howl({ + src: ['sound.webm', 'sound.mp3'] +}); + +// Clear listener after first call. +sound.once('load', function(){ + sound.play(); +}); + +// Fires when the sound finishes playing. +sound.on('end', function(){ + console.log('Finished!'); +}); + +var sound = new Howl({ + src: ['sound.webm', 'sound.mp3'] +}); + +// Play returns a uniqe Sound ID that can be passed +// into any method on Howl to control that specific sound. +var id1 = sound.play(); +var id2 = sound.play(); + +// Fade out the first sound and speed up the second. +sound.fade(1, 0, 1000, id1); +sound.rate(1.5, id2); diff --git a/howler/index.d.ts b/howler/index.d.ts index cdb95ce44f..1b6604b1aa 100644 --- a/howler/index.d.ts +++ b/howler/index.d.ts @@ -1,73 +1,107 @@ -// Type definitions for howler.js v1.1.29 +// Type definitions for howler.js v2.0.0 // Project: https://github.com/goldfire/howler.js -// Definitions by: Pedro Casaubon +// Definitions by: Pedro Casaubon , Todd Dukart // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare class HowlerGlobal { - mute(muted: boolean): HowlerGlobal; +interface HowlerGlobal { + mute(muted: boolean): void; volume(): number; - volume(volume: number): HowlerGlobal; - codecs(extension: string): boolean; - iOSAutoEnable: boolean; + volume(volume: number): this; + codecs(ext: string): boolean; + unload(): void; + usingWebAudio: boolean; + noAudio: boolean; + mobileAudioEnable: boolean; + autoSuspend: boolean; + ctx: AudioContext; + masterGain: GainNode; } -declare var Howler: HowlerGlobal; +declare let Howler: HowlerGlobal; interface IHowlSoundSpriteDefinition { - [name: string]: number[]; + [name: string]: [number, number]|[number, number, boolean] } -declare type HowlPos3d = [number, number, number]|[number, number, number, number]; - interface IHowlProperties { - autoplay?: boolean; - buffer?: boolean; - duration?: number; - format?: string; - loop?: boolean; - sprite?: IHowlSoundSpriteDefinition; - src?: string; - pos3d?: HowlPos3d; + src: string|string[]; volume?: number; - urls?: string[]; + html5?: boolean; + loop?: boolean; + preload?: boolean; + autoplay?: boolean; + mute?: boolean; + sprite?: IHowlSoundSpriteDefinition; rate?: number; - model?: 'equalpower'|'HRTF'; - onend?: Function; - onload?: Function; - onloaderror?: Function; - onpause?: Function; - onplay?: Function; + pool?: number; + format?: string[] | string; + onload?: () => void; + onloaderror?: (soundId: number, error: any) => void; + onplay?: (soundId: number) => void; + onend?: (soundId: number) => void; + onpause?: (soundId: number) => void; + onstop?: (soundId: number) => void; + onmute?: (soundId: number) => void; + onvolume?: (soundId: number) => void; + onrate?: (soundId: number) => void; + onseek?: (soundId: number) => void; + onfade?: (soundId: number) => void; } interface Howl { - autoplay: Boolean; - buffer: Boolean; - format: string; - rate: number; - model: string; - onend: Function; - onload: Function; - onloaderror: Function; - onpause: Function; - onplay: Function; - load(): Howl; - play(sprite?: string, callback?: (soundId: string) => void): Howl; - play(callback?: (soundId: string) => void): Howl; - pause(soundId?: string): Howl; - stop(soundId?: string): Howl; - mute(muted?: boolean, soundId?: string): Howl; - fade(from: number, to: number, duration: number, callback?: Function, soundId?: string): Howl; - loop(): boolean; - loop(loop: boolean): Howl; - pos(position?: number, soundId?: string): number; - pos3d(x: number, y: number, z: number, soundId?: string): any; - sprite(definition?: IHowlSoundSpriteDefinition): IHowlSoundSpriteDefinition; + play(spriteOrId?: string|number): number; // .play() is not chainable; the other methods are + pause(id?: number): this; + stop(id?: number): this; + + mute(): boolean; + mute(muted: boolean, id?: number): this; + volume(): number; - volume(volume?: number, soundId?: string): Howl; - urls(): string[]; - urls(urls: string[]): Howl; - on(event: string, listener?: Function): Howl; - off(event: string, listener?: Function): Howl; + volume(idOrSetVolume: number): this | number; + volume(volume: number, id: number): this; + + fade(from: number, to: number, duration: number, id?: number): this; + + rate(): number; + rate(idOrSetRate: number): this | number; + rate(rate: number, id: number): this; + + seek(seek?: number, id?: number): this; + loop(loop?: boolean, id?: number): this; + playing(id?: number): boolean; + duration(id?: number): number; + + + on(event: 'load', callback: () => void, id?: number): this; + on(event: 'loaderror', callback: (soundId: number, error: any) => void, id?: number): this; + on(event: 'play', callback: (soundId: number) => void, id?: number): this; + on(event: 'end', callback: (soundId: number) => void, id?: number): this; + on(event: 'pause', callback: (soundId: number) => void, id?: number): this; + on(event: 'stop', callback: (soundId: number) => void, id?: number): this; + on(event: 'mute', callback: (soundId: number) => void, id?: number): this; + on(event: 'volume', callback: (soundId: number) => void, id?: number): this; + on(event: 'rate', callback: (soundId: number) => void, id?: number): this; + on(event: 'seek', callback: (soundId: number) => void, id?: number): this; + on(event: 'fade', callback: (soundId: number) => void, id?: number): this; + on(event: string, callback: Function, id?: number): this; + + once(event: 'load', callback: () => void, id?: number): this; + once(event: 'loaderror', callback: (soundId: number, error: any) => void, id?: number): this; + once(event: 'play', callback: (soundId: number) => void, id?: number): this; + once(event: 'end', callback: (soundId: number) => void, id?: number): this; + once(event: 'pause', callback: (soundId: number) => void, id?: number): this; + once(event: 'stop', callback: (soundId: number) => void, id?: number): this; + once(event: 'mute', callback: (soundId: number) => void, id?: number): this; + once(event: 'volume', callback: (soundId: number) => void, id?: number): this; + once(event: 'rate', callback: (soundId: number) => void, id?: number): this; + once(event: 'seek', callback: (soundId: number) => void, id?: number): this; + once(event: 'fade', callback: (soundId: number) => void, id?: number): this; + once(event: string, callback: Function, id?: number): this; + + off(event: string, callback?: Function, id?: number): this; + + state(): 'unloaded' | 'loading' | 'loaded'; + load(): void; unload(): void; }