Sign in to follow this  
zack_falcon

Buttons set to fixedToCamera disappears after game reset.

Recommended Posts

Exactly as it says on the tin.

The buttons in question are on-screen buttons, for mobile devices. Here's my code them.

this.touchBtnUp = this.game.add.button(160, this.game.world.height - 300, 'ctrlBtn_up', this.touchUpCallback, this, 'btn_up.png');
this.touchBtnDown = this.game.add.button(160, this.game.world.height - 150, 'ctrlBtn_down', this.touchDownCallback, this, 'btn_down.png');
this.touchBtnLeft = this.game.add.button(20, this.game.world.height - 150, 'ctrlBtn_left', this.touchLeftCallback, this, 'btn_left.png');
this.touchBtnRight = this.game.add.button(300, this.game.world.height - 150, 'ctrlBtn_right', this.touchRightCallback, this, 'btn_right.png');

this.touchBtnUp.fixedToCamera = true;
this.touchBtnDown.fixedToCamera = true;
this.touchBtnLeft.fixedToCamera = true;
this.touchBtnRight.fixedToCamera = true;

Nothing out of place, except for one thing: 'ctrlBtn_up' doesn't exist as a spritesheet. Since this is a temporary code, I've used temporary assets, which are not in a spritesheet, but individually created. I'm not sure if that has an effect on anything.

Now, come game over, I show a game over layer (if the player wins) or immediately reset the game (if the player loses). Here's my code for those:

create()
{
  this.gameOverLayer = new GameOverLayer(this.game);
  this.gameOverLayer.fixedToCamera = true;
}

restartGame()
{
  console.log("Restart Level");
  this.bIsGameOver = true;
  var slideOut = Phaser.Plugin.StateTransition.Out.ScaleUp;
  slideOut.duration = 1000;

  var slideIn = Phaser.Plugin.StateTransition.In.SlideBottom;
  slideIn.duration = 1000;
  this.game.state.start('gameplay' , slideOut );
}

endGame() {
  //Finished Level
  console.log("Finished Level");
  this.gameOverLayer.showGameOver(0);
}

And the game over layer has a button that essentially does the same thing as the restartGame function.

However, whether the game is over or restarts, the buttons go missing on the next play through (reloading the browser makes them show up again).

I've tried resetting the x and y, but to no avail.

About the only thing that works is to disable the fixedToCamera but that would mean the buttons getting left behind when the player moves.

Anything else I can try?

Share this post


Link to post
Share on other sites

it sounded like you've messed up the scoping rules of JavaScript (since I don't see the whole code that would be the best assumption) untill you mentioned that disabling "fixedToCamera" fixes the issue. I'm at a loss now.

Share this post


Link to post
Share on other sites

I don't know if I'm reading it right, but if the buttons are in the first scene, they'll get removed when you switch to a second scene. That's normal.

Also try it without the plugin (as in don't load the plugin at all).

Share this post


Link to post
Share on other sites

Fixed it. The problem is with this code:

this.touchBtnUp = this.game.add.button(160, this.game.world.height - 300, 'ctrlBtn_up', this.touchUpCallback, this, 'btn_up.png');

For some reason, on game restart, the game.world.height changes. So it's less a case of it disappearing than it is getting set up in the wrong place.

For now, I just hard-coded in my usual height, until I figure out why that changes.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.