Gammerr Posted March 15, 2018 Share Posted March 15, 2018 How can I use this loop of Phaser examples and add.text to each one of the object that we created in the group? var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create}); function preload() { game.load.image('sonic', 'assets/sprites/sonic_havok_sanity.png'); } var yourGroup; function create() { // Here we'll create a new Group yourGroup = game.add.group(); // And add 10 sprites to it for (var i = 0; i < 10; i++) { // Create a new sprite at a random world location yourGroup.create(game.world.randomX, game.world.randomY, 'sonic'); } // Each sprite is now a member of yourGroup } Edit: I'm so close to the solution now, Common guys you've got to help me, not that much left here var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render }); function preload() { game.load.image('sky', 'assets/sky.png'); game.load.image('cloud1', 'assets/cloud.png'); game.load.image('pocket', 'assets/pocket.png'); } var cursors; var randomNumberX; var cloud1; var cloudGroup; var pocket; var score = 0; var scoreText; var text1; function create() { game.physics.startSystem(Phaser.Physics.ARCADE); cursors = game.input.keyboard.createCursorKeys(); game.add.image(0, 0, 'sky'); cloud1 = game.add.sprite(0, -400, 'cloud1'); pocket = game.add.sprite(568, 568, 'pocket'); game.physics.arcade.enable([cloud1, pocket]); var cloudTextStyle = { font: "bold 16px Arial", fill: "#000", align: "center" }; cloudGroup = game.add.group(); for (var i = 0; i < 2; i++) { randomNumberX = Math.floor(Math.random() * 580) + 1; // Create a new sprite at a random world location cloudGroup.create(randomNumberX, i * (-300), 'cloud1'); } cloudGroup.forEach(function(item){ game.physics.arcade.enable(item); item.body.velocity.y = 80; item.anchor.set(0); }); // game.physics.arcade.gravity.y = 200; // cloud1.body.bounce.y = 0.95; pocket.body.collideWorldBounds = true; pocket.body.allowGravity = false; pocket.body.immovable = true; // The score scoreText = game.add.text(16, 16, 'score: 0', { fontize: '32px', fill: '#fff' }); text1 = game.add.text(0, 0, "Organization", cloudTextStyle, cloudGroup); text1.anchor.set(0.5); } function update() { cloudGroup.forEach(function(item){ game.physics.arcade.overlap(item, pocket, collisionHandler, null, this); }); pocket.body.velocity.x = 0; // Movement if (cursors.left.isDown) { // Move to the left pocket.body.velocity.x = -350; } else if (cursors.right.isDown) { // Move to the right pocket.body.velocity.x = +350; } else { pocket.animations.stop(); } // Text cloudGroup.forEach(function(item){ item.alpha = 0.85; text1.x = Math.floor(item.x + item.width / 2); text1.y = Math.floor(item.y + item.height / 2); }); } function collisionHandler (cloud1, pocket) { cloud1.destroy(); text1.destroy(); score += 10; scoreText.text = 'Score: ' + score; } Link to comment Share on other sites More sharing options...
samme Posted March 15, 2018 Share Posted March 15, 2018 // And add 10 sprites to it for (var i = 0; i < 10; i++) { // Create a new sprite at a random world location var sprite = yourGroup.create(game.world.randomX, game.world.randomY, 'sonic'); sprite.addChild(game.make.text(0, 0, 'sprite' + i)); // etc. } Link to comment Share on other sites More sharing options...
Gammerr Posted March 15, 2018 Author Share Posted March 15, 2018 OK, I tried that cloudGroup = game.add.group(); for (var i = 0; i < 2; i++) { randomNumberX = Math.floor(Math.random() * 580) + 1; // Create a new sprite at a random world location cloudGroup.create(randomNumberX, i * (-300), 'cloud1'); cloudGroup.addChild(game.make.text(0, 0, 'sprite' + i)); } and I'm getting an error Uncaught TypeError: Cannot read property 'velocity' of undefined Link to comment Share on other sites More sharing options...
samme Posted March 15, 2018 Share Posted March 15, 2018 Do you want to attach a text object to each sprite in a group? You need to use sprite.addChild for that. Or do you just want a group of text objects? Link to comment Share on other sites More sharing options...
Gammerr Posted March 15, 2018 Author Share Posted March 15, 2018 for each one I want to add a text, so let's say I created a loop of 5 items I will have 5 texts that I want to display on each one Link to comment Share on other sites More sharing options...
samme Posted March 16, 2018 Share Posted March 16, 2018 cloudGroup = game.add.group(); for (var i = 0; i < 2; i++) { randomNumberX = Math.floor(Math.random() * 580) + 1; // Create a new sprite at a random world location var cloud = cloudGroup.create(randomNumberX, i * (-300), 'cloud1'); cloud.addChild(game.make.text(0, 0, 'cloud' + i)); } Link to comment Share on other sites More sharing options...
Gammerr Posted March 16, 2018 Author Share Posted March 16, 2018 Thank you so much! Link to comment Share on other sites More sharing options...
Recommended Posts