js_unit

game.load.image (load is null?)

Recommended Posts

Hi there guys

 

I have one that is bugging me. I'm an old back end dev, but new to js. And in the process of my first decent project, I encountered this issue.

 

In my custom main 'class', I keep a this.game which I instantiate to a phaser Game. Doing a console.debug on it, I can verify that it's a valid Game object.

Adding states to it works fine, but in my preload, I realised that 'this.game.load.image()' borks out, because 'cannot read image on null'.

 

console.debug this.game.load yields NULL

console.debug this.game yields a valid phaser Game

 

It is like load is not in there, and it makes no sense, all the documentation is doing it this way.

 

If you look at my console debug below, that is where I am checking it. It fails the game.load check directly after instantiating Game.

var SwagMain = function (resX, resY, renderer, parentElement, antiAlias) {    if (typeof(antiAlias) === 'undefined') antiAlias = true;    if (typeof(parentElement) === 'undefined') parentElement = '';    this.resolutionX = resX;    this.resolutionY = resY;    this.renderer = renderer;    this.parentElement = parentElement;    //this.antiAlias = antiAlias;    this.game = null;    this.initialise();}SwagMain.prototype.initialise = function () {    console.log('initialise running...');    if (this.game === null) {        this.game = new Phaser.Game(            this.resolutionX,            this.resolutionY,            this.renderer,            this.parentElement        );        console.log('------------- -- - - - -----------');        console.debug(this.game);        console.log('------------- -- - - - -----------');

Hope someone can show me where I am being an idjit.

 

Thanks.

 

Marlon

 

post-14955-0-79310500-1433853764.png

post-14955-0-24305100-1433853765.png

Share this post


Link to post
Share on other sites

Race condition. At the time you check game.load the Phaser.Loader (or any of the other sub-systems) haven't had a chance to initialise. That doesn't happen until the DOM is fully ready.

 

This is why a Phaser State has a preload method, so you can put all your load calls in there and you'll know it won't get hit until everything is ready.

Share this post


Link to post
Share on other sites

As you said that, I realised that I have been looking at this problem idiotically.

Thank you Rich, 

 

Initially, applying your fix gave me the same issue in preload. 

But I changed the code, by having my states external and injecting them in here, and it works like a charm now.

 

Sorry for the silly question

 

Thx

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.