How to add a Message Box to your Phaser Game
Have you ever needed to message a player in a game? Maybe a feature isn’t available yet, or the player doesn’t have enough heath for a specific attack. A convenient way is to implement a message box. Here is one method I use to do this:
See The Demovar StateMain = { preload: function() { game.load.image("closeButton", "images/closeButton.png"); game.load.image("boxBack", "images/boxBack.png"); game.load.image("testButton", "images/testButton.png"); }, create: function() { //create a test button to launch the message box var buttonTest=game.add.sprite(game.width/2,game.height/2,"testButton"); buttonTest.anchor.set(0.5,0.5); buttonTest.inputEnabled=true; buttonTest.events.onInputDown.add(this.testMessageBox,this); }, testMessageBox() { //call this line of code when you want to show the message box //message, width and height this.showMessageBox("HELLO THERE! Put Some Text Here!", game.width * .7, game.height * .5); }, // //w=width //h=height // showMessageBox(text, w = 300, h = 300) { //just in case the message box already exists //destroy it if (this.msgBox) { this.msgBox.destroy(); } //make a group to hold all the elements var msgBox = game.add.group(); //make the back of the message box var back = game.add.sprite(0, 0, "boxBack"); //make the close button var closeButton = game.add.sprite(0, 0, "closeButton"); //make a text field var text1 = game.add.text(0, 0, text); //set the textfeild to wrap if the text is too long text1.wordWrap = true; //make the width of the wrap 90% of the width //of the message box text1.wordWrapWidth = w * .9; // // //set the width and height passed //in the parameters back.width = w; back.height = h; // // // //add the elements to the group msgBox.add(back); msgBox.add(closeButton); msgBox.add(text1); // //set the close button //in the center horizontally //and near the bottom of the box vertically closeButton.x = back.width / 2 - closeButton.width / 2; closeButton.y = back.height - closeButton.height; //enable the button for input closeButton.inputEnabled = true; //add a listener to destroy the box when the button is pressed closeButton.events.onInputDown.add(this.hideBox, this); // // //set the message box in the center of the screen msgBox.x = game.width / 2 - msgBox.width / 2; msgBox.y = game.height / 2 - msgBox.height / 2; // //set the text in the middle of the message box text1.x = back.width / 2 - text1.width / 2; text1.y = back.height / 2 - text1.height / 2; //make a state reference to the messsage box this.msgBox = msgBox; }, hideBox() { //destroy the box when the button is pressed this.msgBox.destroy(); }, update: function() {} }
Hi
Thanks for your sharing.
Do you know how to add texte ( give option to user to write text) like input in phaser game ?
Thanks for any help
Yes! I found it through Phaser.io and it works great! https://github.com/orange-games/phaser-input