jamaalsd Posted September 22, 2014 Share Posted September 22, 2014 Hey all, I'm having trouble with Phaser 2.1.1 were an animated tilesprite is causing the game to crash through a memory leak of some kind. details are as follows: in preload:/*The spritesheet is huge, especially for one item. I am aware of this*/game.load.spritesheet('playerWaterTrail','media/img/sprites/player/waterTrail.png', 115, 160, 97);in create: /*create the sprite*/this.player.waterTrail = game.add.tileSprite(this.player.x+45, this.player.y-130, 115, 160, 'playerWaterTrail');/*add to the proper layer of the game*/this.baseLayer.add(this.player.waterTrail);/*create and add the animation*/this.player.waterTrail.animations.add('play',null,31,true);/*this causes a massive memory leak somehow over time*/this.player.waterTrail.animations.play('play');this.player.waterTrail.autoScroll(0,-this.WATER_TRAIL_SPEED);this.player.waterTrail.update = function (){ this.x = game.currentActiveState.player.x + 45; this.y = game.currentActiveState.player.y - 130;}.bind(this.player.waterTrail);Any thoughts on what is going on? I'm having trouble tracking it down. Link to comment Share on other sites More sharing options...
lewster32 Posted September 22, 2014 Share Posted September 22, 2014 this.player.waterTrail.update = function (){ this.x = game.currentActiveState.player.x + 45; this.y = game.currentActiveState.player.y - 130;}.bind(this.player.waterTrail);That bit looks suspicious to me - why are you using bind? This doesn't look typical of how you'd usually do it in Phaser. Could you try instead doing this in the game's main update function instead? Something like this:update: function() { this.player.waterTrail.position.copyFrom(game.currentActiveState.player.position);}, Link to comment Share on other sites More sharing options...
jamaalsd Posted September 22, 2014 Author Share Posted September 22, 2014 Thanks for responding lewster32. Trying now. Link to comment Share on other sites More sharing options...
jamaalsd Posted September 22, 2014 Author Share Posted September 22, 2014 Looks like everything is still the same. The binding of update loops within objects has never been a problem. I did that because of the way I structured the code. Your way is better so I'll shift things over. To add to the mystery: I forgot to mention that when Phaser is set to AUTO there is no memory leak but also the tileSprite fails to animate. I had it set to CANVAS and this is when the problem occurs. Link to comment Share on other sites More sharing options...
lewster32 Posted September 22, 2014 Share Posted September 22, 2014 Hmm. It's true that the way TileSprites work is much more suited to webGL (as you pretty much get it for free as a standard way of applying textures to quads) so maybe there is something weird going on in the canvas implementation. I'd perhaps put a test case together and post this as a possible issue on the pixi Github page, or mention it on the pixi forums? Phaser's TileSprite is just a simple wrapper for the functionality which is defined in pixi, so I'm pretty sure that's where the bug (if it is one) resides. Link to comment Share on other sites More sharing options...
Wavertron Posted September 23, 2014 Share Posted September 23, 2014 Interesting. I've noticed my Firefox browser crashing a lot lately when testing a game. This might be why. Link to comment Share on other sites More sharing options...
arislan Posted November 30, 2014 Share Posted November 30, 2014 Anyone got any update on this? I'm seeing similar issues where my game chews up to 2.5GB of memory in Chrome. I've tried it a few times and same in all cases. I just leave it idle overnight and it gets up to that amount of memory usage. I am using a tilesprite, not sure if that is the one using it as I haven't had time to dig further yet. Link to comment Share on other sites More sharing options...
Recommended Posts