Closed jf-m closed 3 years ago
Thanks for this report. Did you use game.destroy()
or game.pendingDestroy = true
?
- Cannot read property 'update' of null
I'm not sure what to do about this one, since setting pendingDestroy would avoid the error. I guess a second check could be added.
I'm using game.destroy()
to destroy the game.
The game is located in a vueJS Component, when the VueJS component unloads, right before removing the canvas from the dom (VueJS's beforeDestroy
method) , I call game.destroy()
.
I was using Phaser-ce 2.16.0 before that, with no sound at all in the game. I just recently added the sound effects and updated to 2.16.2 at the same time. This is when all of these 5 errors occured.
Before that, I had no issues when destroying the game. Even the 5th one reported here wasn't there before. (but oddly it does not seems to be related to WebAudio...).
Could you try this build and see if it avoids the errors? phaser-test.js.zip
@samme this build seems to solves the errors : 1, 2, 4 and 5
The number 3 (a warning) is not solved though, it still says Cannot read property 'usingWebAudio' of null
in a console warning message.
To give you more informations, the exception is thrown from here:
Then it's caught here:
Then it's in the asyncComplete
that it's logged as a warning.
But this exception is all inside a FileComplete event inside a xhrLoad
request.
This original xhrLoad
has been initiated here:
So I guess that inside the loadFile
, the isBooted
is still true because the game is here, but I assume that the game is destroyed during the xhr request, and the isBooted
is false when the xhr request is completed. We should probably add a conditional on isBooted
inside the fileComplete
method.
If I add the following
if (!this.game.isBooted)
{
return;
}
Right at the beginning of:
The warning goes away
Hope this helps 👍
We should probably add a conditional on isBooted inside the fileComplete method.
I think phaser-test.js
has that.
@samme My bad, you're right !
I actually couldn't use directly your build and had to show the diff and impact it one by one, seems like I missed that one.
I tested it once again, and it seems to be perfectly working, thank you !
This Issue is about
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:
Concerned line of code:
https://github.com/photonstorm/phaser-ce/blob/585160726bf3be112d7a37c8469171a3203e1ae5/src/sound/Sound.js#L1135-L1138
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:
Concerned line of code: https://github.com/photonstorm/phaser-ce/blob/c7f5f4345530fea0ad5a2d578b1c7fc26513380a/src/loader/Loader.js#L1271-L1276
https://github.com/photonstorm/phaser-ce/blob/c7f5f4345530fea0ad5a2d578b1c7fc26513380a/src/loader/Loader.js#L2850-L2855
Comment: We should check the existence of
this.game
andthis.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:
Concerned line of code:
https://github.com/photonstorm/phaser-ce/blob/c7f5f4345530fea0ad5a2d578b1c7fc26513380a/src/loader/Loader.js#L2407-L2410
https://github.com/photonstorm/phaser-ce/blob/c7f5f4345530fea0ad5a2d578b1c7fc26513380a/src/loader/Loader.js#L3051-L3061
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:
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:
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. 👍