Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 암호화
- jQuery
- phaser
- AWS
- 비트코인
- SQL
- JavaScript
- CSS
- 알고리즘
- PL/SQL
- 웹게임
- HTML
- express
- JSP
- 도커
- 배포
- autowired
- Spring
- 웹소켓
- tiles.xml
- model1
- 블록체인
- Servlet
- Ajax
- websocket
- Cookie
- node.js
- RDS
- EC2
- docker
Archives
- Today
- Total
記錄
Pet_4) sprite frame, Health와 Fun 수치 삽입 본문
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);
'Game > Phaser' 카테고리의 다른 글
Pet_6) State 관리 (0) | 2018.04.06 |
---|---|
Pet_5) timer, GameOver & restart (0) | 2018.04.06 |
Pet_3) rotate(), Placing items (0) | 2018.04.06 |
Pet_2) inputEnabled, enableDrag(), button 처리 (0) | 2018.04.06 |
Pet_1) init, API Doc 활용, phaser 함수 다시 이해 (0) | 2018.04.06 |
Comments