Bobcp Posted September 26, 2015 Share Posted September 26, 2015 Hi, i create script, and have error, don't understand why it happens, can you help me? this.lostLife = function (jim, snowball){ snowball.hasOverlap =true; life=life-1; waterScore=waterScore-10; if(waterScore<0){waterScore=0}; jim.body.enable = false; this.jimAliveTimer = this.game.time.events.add(Phaser.Timer.SECOND, jimAlive, this); // Error this line code console.log('LifeLost');} Link to comment Share on other sites More sharing options...
Noid Posted September 28, 2015 Share Posted September 28, 2015 Before this.jimAliveTimer.. you can add console.log(this) to see what this is refering to. It's hard to tell where's the error without looking at the rest of the code but what the interpreter is telling you is that you want to access a property called time inside this.game but this.game is undefined. If you're new to javascript I suggest you read https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/ch1.md Link to comment Share on other sites More sharing options...
Bobcp Posted September 28, 2015 Author Share Posted September 28, 2015 Before this.jimAliveTimer.. you can add console.log(this) to see what this is refering to. It's hard to tell where's the error without looking at the rest of the code but what the interpreter is telling you is that you want to access a property called time inside this.game but this.game is undefined. If you're new to javascript I suggest you read https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/ch1.mdThank you. Yes, it's becouse use this. Sometime this defind like a object game, but another way, this defined like a function. I put console.log(this) before this.jimAliveTimerfunction (jim, snowball){ snowball.hasOverlap =true; life=life-1; waterScore=waterScore-10; if(waterScore<0){waterScore=0}; jim.body.en…this.game.physics.arcade.collide(jim, snowballGroup, this.lostLife);snowball is a child of the group called snowballGroupthis.snowballCreate = function() { this.snowball = snowballGroup.create(1500*ratioScale,this.game.world.height-100*ratioScale-heightGround*ratioScale, 'snowball'); this.snowball.scale.setTo(ratioScale, ratioScale); this.snowball.body.gravity.y = 2000; this.snowball.body.bounce.y = 0.1; this.snowball.body.mass = 10; this.snowball.anchor.setTo(0.5, 0.5) this.snowball.hasScored=false; this.snowball.hasOverlap=false; }Why this defined like a function, not like an object? Link to comment Share on other sites More sharing options...
Noid Posted September 28, 2015 Share Posted September 28, 2015 this is bound at runtime to the calling function. In you code this will be set to whoever called lostLife(). The one calling lostLife must have a property called game containing a reference to a Phaser.Game if you want this.game.time.... to work as intented. Link to comment Share on other sites More sharing options...
Recommended Posts