-
Notifications
You must be signed in to change notification settings - Fork 488
Description
This Issue is about
- A bug in the API:
- Phaser version(s): 2.16.2
- Live example: /
- What steps produce the bug: Load and destroy the scene before the loader has finished loading the sound assets and/or after loaded an audio sound but before decoding
- What should happen: No error should be thrown
- What happens instead: errors are thrown
- If there's an error:
- What's the error message? See the comment below
- What's the error trace (expand the error message)? See the comment below
Hello there and thank you for maintaining this repo !
Several errors may occurs when destroying the game too early. These errors are all related to WebAudio.
Note that these errors occurred in a single page app where window.PhaserGlobal = {}; has been set as suggested in the doc.
1. Cannot set property 'onended' of null
Stacktrace:
phaser.js:59104 Uncaught TypeError: Cannot set property 'onended' of null
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Sound._removeOnEndedHandler (phaser.js:59104)
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Sound.onEndedHandler (phaser.js:58397)
Concerned line of code:
Comment:
I guess this._sound is null or undefined at this stage, when the whole game has been destroyed.
2. Cannot read property 'noAudio' of null
Stacktrace:
phaser.js:56719 Uncaught TypeError: Cannot read property 'noAudio' of null
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Loader.getAudioURL (phaser.js:56719)
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Loader.loadFile (phaser.js:56269)
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Loader.processLoadQueue (phaser.js:56008)
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Loader.asyncComplete (phaser.js:56110)
at XMLHttpRequest.xhr.onload (phaser.js:56619)
Concerned line of code:
https://github.com/photonstorm/phaser-ce/blob/c7f5f4345530fea0ad5a2d578b1c7fc26513380a/src/loader/Loader.js#L1271-L1276
Comment:
We should check the existence of this.game and this.game.sound beforehand.
3. Cannot read property 'usingWebAudio' of null
This one is a warning, not an error so it's less important but still.
Stacktrace:
Cannot read property 'usingWebAudio' of null
asyncComplete | @ | phaser.js:56107
Concerned line of code:
Being catch and log as a warning here:
https://github.com/photonstorm/phaser-ce/blob/c7f5f4345530fea0ad5a2d578b1c7fc26513380a/src/loader/Loader.js#L2240
4. Cannot read property 'decodedSound' of null
Stacktrace:
Uncaught TypeError: Cannot read property 'decodedSound' of null
at AudioContext.<anonymous> (phaser.js:59771)
Concerned line of code:
https://github.com/photonstorm/phaser-ce/blob/ccbe5d7277194a4607492928ff26997ebc34c9ed/src/sound/SoundManager.js#L527-L534
5. Cannot read property 'update' of null
Stacktrace:
phaser.js:14822 Uncaught TypeError: Cannot read property 'update' of null
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.Game.update (phaser.js:14822)
at push../resources/assets/js/plugins/phaser.js?a3d3.Phaser.RequestAnimationFrame.updateRAF (phaser.js:43150)
at _onLoop (phaser.js:43134)
at __trace__ (bugsnag.js:2613)
Concerned line of code:
https://github.com/photonstorm/phaser-ce/blob/585160726bf3be112d7a37c8469171a3203e1ae5/src/core/Game.js#L982-L991
Comment:
I guess that one is not related to the use of WebAudio
Most of this should be solved by adding some conditional check I suppose.
Once again, thank you for maintaining this repo, have a good day. 👍