FahrulID Posted February 26, 2018 Share Posted February 26, 2018 I want to use "display text word by word" but i got a problem, i want to make that whenever a button a pressed the text will appear and then, if pressed again the text will be overwriten by a new text. I look in example but that thing kinda not work with my code. var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { create: create }); var content = [ "The sky above the port was the color of television, tuned to a dead channel.", "`It's not like I'm using,' Case heard someone say, as he shouldered his way ", "through the crowd around the door of the Chat. `It's like my body's developed", "this massive drug deficiency.' It was a Sprawl voice and a Sprawl joke.", "The Chatsubo was a bar for professional expatriates; you could drink there for", "a week and never hear two words in Japanese.", "", "Ratz was tending bar, his prosthetic arm jerking monotonously as he filled a tray", "of glasses with draft Kirin. He saw Case and smiled, his teeth a webwork of", "East European steel and brown decay. Case found a place at the bar, between the", "unlikely tan on one of Lonny Zone's whores and the crisp naval uniform of a tall", "African whose cheekbones were ridged with precise rows of tribal scars. `Wage was", "in here early, with two joeboys,' Ratz said, shoving a draft across the bar with", "his good hand. `Maybe some business with you, Case?'", "", "Case shrugged. The girl to his right giggled and nudged him.", "The bartender's smile widened. His ugliness was the stuff of legend. In an age of", "affordable beauty, there was something heraldic about his lack of it. The antique", "arm whined as he reached for another mug.", "", "", "From Neuromancer by William Gibson" ]; var line = []; var wordIndex = 0; var lineIndex = 0; var wordDelay = 120; var lineDelay = 400; function create() { text = game.add.text(32, 32, '', { font: "15px Arial", fill: "#19de65" }); nextLine(); } function nextLine() { if (lineIndex === content.length) { // We're finished return; } // Split the current line on spaces, so one word per array element line = content[lineIndex].split(' '); // Reset the word index to zero (the first word in the line) wordIndex = 0; // Call the 'nextWord' function once for each word in the line (line.length) game.time.events.repeat(wordDelay, line.length, nextWord, this); // Advance to the next line lineIndex++; } function nextWord() { // Add the next word onto the text string, followed by a space text.text = text.text.concat(line[wordIndex] + " "); // Advance the word index to the next word in the line wordIndex++; // Last word? if (wordIndex === line.length) { // Add a carriage return text.text = text.text.concat("\n"); // Get the next line after the lineDelay amount of ms has elapsed game.time.events.add(lineDelay, nextLine, this); } } Link to comment Share on other sites More sharing options...
head Posted February 27, 2018 Share Posted February 27, 2018 so you just need to use the nextWord() in your key press callback and get rid of the game.time.events stuff what exactly did you try, what is not working? Link to comment Share on other sites More sharing options...
Recommended Posts