Я играл с Phaserjs и Cordova и застрял в чем-то, вероятно, тривиальном. Это более общий вопрос javascript, чем фазер, но я не нашел ответа.
Я использую Cordova-plugin-shake для обнаружения дрожания, и он отлично работает. Что я хотел бы сделать, так это изменить некоторые спрайты onShake ().
Test.Game.prototype = {
create: function() {
this.hand = this.game.add.sprite(this.game.world.centerX-36, 27, 'hand');
this.hand.animations.add('squeeze',[0,1,2,3,4,5,6,5,4,3,2,1,0]);
this.hand.animations.add('shake',[8,9,10,11,12,13,14,15,16,17,17,8,9,8]);
this.healthBar = this.game.add.sprite(260, 18, 'utils');
this.setCapacity(4);
shake.startWatch(this.onShake, 40);
},
onShake: function(){
console.log("shaked");
this.hand.animations.play('shake', 60, false);
this.setCapacity(Math.floor(Math.random() * (MAX_CAPACITY - MIN_CAPACITY + 1)) + MIN_CAPACITY);
},
setCapacity: function(capacity){
this.healthBar.prevCap = capacity;
this.healthBar.inCapacity = capacity;
this.healthBar.capacity = capacity;
var cropRect = new Phaser.Rectangle(0, 0, healthBarWidth, this.healthBar.height);
this.healthBar.crop(cropRect);
this.healthBar.prevWidth = healthBarWidth;
},
[...]
};
Проблема в том, что onShake передается по значению, верно? Так что у меня нет доступа ни к setCapacity (), ни к hand. Как мне этого избежать? Есть ли какие-нибудь уроки / примеры, где я могу прочитать?
Спасибо за ваше время и извините за такой тривиальный вопрос, но я все еще новичок в js.