thiezar Posted February 22, 2014 Share Posted February 22, 2014 Hi all.I have a problem with my game I can't understand. Here the code: function createTitleView() { //Creates title title = game.add.sprite(game.world.centerX, game.world.centerY-60, 'title'); title.anchor = new Phaser.Point(0.5,0.5); title.name= "title"; //Creates play button playBtn = game.add.sprite(game.world.centerX, game.world.centerY+60, 'playBtn'); playBtn.anchor = new Phaser.Point(0.5,0.5) playBtn.name = "play button"; //Creates game view titleView = game.add.group(); titleView.name = "title view"; titleView.add(title); titleView.add(playBtn); //Assigns event listener to play button playBtn.inputEnabled = true; playBtn.events.onInputDown.add(startGame, this);}function startGame() { // Creates the player gameView = game.add.group(); gameView.name = "game view"; unicorn = game.add.sprite(100, 100, 'unicorn'); unicorn.name = "unicorn"; gameView.add(unicorn); // Slides out the title view titleViewSlideOut = game.add.tween(titleView).to({y: -game.world.height}, 500, Phaser.Easing.Exponential.In, true); createGameView();}Now the fact is that the unicorn's position is relative to the playerBtn and moves with it. Why is that if they're on two separate groups?Here is a dump of the titleView Node | Next | Previous | First | Last ---------- | ---------- | ---------- | ---------- | ---------- group | title | credits button | group | play button > title | play button | group | title | title play button | group | title | play button | play button and here is a dump of the game view Node | Next | Previous | First | Last ---------- | ---------- | ---------- | ---------- | ---------- group | unicorn | play button | group | unicorn > unicorn | - | group | unicorn | unicorn As you can see the play button is somehow part of the gameView. How could it be possible? Link to comment Share on other sites More sharing options...
jcs Posted February 23, 2014 Share Posted February 23, 2014 not entirely sure about the behavior you're seeing, but your sprites are all being added to multiple groups, because calling the function 'game.add.sprite( x, y, key, frame, group )' adds sprites to the 'world' group if no group is specified in the 5th parameter. soplayBtn = game.add.sprite(game.world.centerX, game.world.centerY+60, 'playBtn');adds 'playBtn' to the 'world' group, and then you are also adding it to another group. if you want to create a sprite without adding it to any group (including the 'world' group), just create it using 'new'. e.g.:playBtn = new Phaser.Sprite( game, x, y, key, frame );and then add it to the group you want it in. OR use 'group.create()' (which is what game.add.sprite() is calling), e.g.playBtn = someViewICreated.create( x, y, key, frame ); Link to comment Share on other sites More sharing options...
thiezar Posted February 24, 2014 Author Share Posted February 24, 2014 It seems a good solution to my problem. Thanks. I didn't know sprites were added to the world group too. Where can I find those phaser engine details? Link to comment Share on other sites More sharing options...
Recommended Posts