記錄

Pet_4) sprite frame, Health와 Fun 수치 삽입 본문

Game/Phaser

Pet_4) sprite frame, Health와 Fun 수치 삽입

surhommejk 2018. 4. 6. 18:07

sprite frame 설정


// 최초 sprite를 add 할 때에 네번째 파라미터로 frame의 번호를 설정해주면
// 디폴트 frame이 설정된 파라미터로 넣은 frame으로 설정된다
// ex) this.pet = this.game.add.sprite(100, 400, 'pet', 3);
this.pet = this.game.add.sprite(100, 400, 'pet');
this.pet.anchor.setTo(0.5);



// spritesheet animation
// animations를 키 값을 설정하여 저장처리
// 7 : how many frames per second (speed)
// boolean : looping 여부 설정. true면 무한 반복
this.pet.animations.add('funnyfaces', [1, 2, 3, 2, 1], 7, false);



//destroy the apple/candy/duck
newItem.destroy();

// play animation
// pet이 이동 후 새로운 newItem이 없어지고 나면
// funnyfaces로 저장해둔 animations가 실행되도록 처리
this.pet.animations.play('funnyfaces');










Health와 Fun 수치 삽입


// 화면에 텍스트를 부여한다
// create에 삽입
var style = { font: '20px Arial', fill: '#fff'};
this.game.add.text(10, 20, 'Health:', style);
this.game.add.text(140, 20, 'Fun:', style);

// '' 내부에 나오는 것이 화면에 찍히게 된다
// 일단 빈 텍스트로 잡아두고 함수로 컨트롤 하기 위함이다
this.healthText = this.game.add.text(80, 20, '', style);
this.funText = this.game.add.text(185, 20, '', style);

// 여기서 Health와 Fun 수치를 컨트롤 한다
this.refreshStats();



refreshStats: function() {
this.healthText.text = this.pet.customParams.health;
this.funText.text = this.pet.customParams.fun;
}



placeItem: function(sprite, event) {

if(this.selectedItem && !this.uiBlocked) {
var x = event.position.x;
var y = event.position.y;

var newItem = this.game.add.sprite(x, y, this.selectedItem.key);
newItem.anchor.setTo(0.5);
newItem.customParams = this.selectedItem.customParams;

this.uiBlocked = true;

//move the pet towards the item
var petMovement = this.game.add.tween(this.pet);
petMovement.to({x: x, y: y}, 700);
petMovement.onComplete.add(function(){

//destroy the apple/candy/duck
newItem.destroy();

//play animation
this.pet.animations.play('funnyfaces');

//release the ui
this.uiBlocked = false;

var stat;
for(stat in newItem.customParams) {
//we only want the properties of the customParams object,
not properties that may existing in customParams.prototype
//this filters out all non-desired properties
if(newItem.customParams.hasOwnProperty(stat)) {
this.pet.customParams[stat] += newItem.customParams[stat];
}
}

//update the visuals for the stats
this.refreshStats(); <-- 먹고 수치가 변화했으니 화면에도 동기화를 시키기 위해서
먹고난 뒤 여기서 refreshStats() 를 실행해준다.

}, this);

//start the tween animation
petMovement.start();
}
},


rotatePet: function(sprite, event) {

if(!this.uiBlocked) {

//we want the user interface (UI) to be blocked until the rotation ends
this.uiBlocked = true;

this.clearSelection();

//alpha to indicate selection
sprite.alpha = 0.4;

var petRotation = this.game.add.tween(this.pet);

//make the pet do two loops
petRotation.to({angle: '+720'}, 1000);

petRotation.onComplete.add(function(){
//release the UI
this.uiBlocked = false;

sprite.alpha = 1;

//increse the fun of the pet
this.pet.customParams.fun += 10;
//update the visuals for the stats
this.refreshStats(); <-- 돌고 나서도 수치가 변하므로 최신화 시켜준다
}, this);


Comments