nvminhtu / LearnPhaser

Tutorial, Experience, Coding with Phraser
1 stars 2 forks source link

[Hỏi đáp Phaser JS] Hỏi đáp những hàm, thắc mắc, code build mobile....trong Phaser #42

Open nvminhtu opened 7 years ago

nvminhtu commented 7 years ago

@thanhtungtnt @lamanhdai Các câu hỏi chung đặt tại đây nha.

nvminhtu commented 7 years ago

1- Phaser.AUTO nếu để mặc định thì nó hiểu là sao?

Phaser có 4 kiểu Render

  • Phaser.HEADLESS
  • Phaser.CANVAS
  • Phaser.AUTO
  • Phaser.WEBGL

Khi console ra chúng ta sẽ thấy như sau

Phaser v2.4.3-RC1 | Pixi.js v2.2.8 | Canvas | WebAudio

=> mặc định PHASER sẽ hiểu AUTO là phaser.CANVAS

nvminhtu commented 7 years ago

2. Không muốn render ra CANVAS thì phải làm sao?

Đáp: Sử dụng Phaser.HEADLESS nếu không muốn render ra CANVAS/WEBGL -> viết code js bình thường cũng OK.

HEADLESS skips render hooks but not preRender or postRender; set lockRender to skip those as well.

@lamanhdai @thanhtungtnt

thanhtungtnt commented 7 years ago
  1. Anh em có ai làm được cái nút volumn, mà khi click vào thì nó mute, click lần nữa thì nó mở lại không?

Bữa Tùng có làm thử, chạy được trên web bình thường. Nhưng khi build ra android app thì nó lỗi. :|

nvminhtu commented 7 years ago

@thanhtungtnt share link của file source đó coi thử với nhé, mình đặt biết flag (biết flag đó thì mình set LocalStorage) có điều hạn chế của LocalStorage là phải load lại game lần nữa thì nó mới get value của cái current => tốt nhất là lưu cache khi người dùng đang còn trong game đó.

Android nó lỗi như nào? toggleMute: function() { if (!this.game.sound.mute) { this.game.sound.mute = true; } else { this.game.sound.mute = false; } },

thanhtungtnt commented 7 years ago

Nó không click được ku ơi. Thực ra cái game Animal sound đó nếu m check sprite bên trong m sẽ thấy có 1 cái sprite volumn tao làm đó.

Nhưng t code ko chạy nên tao xoá đi ko đưa vào game.

Code đó tao xoá mất rồi. Code thì cũng dễ, chiều tao dành ra nửa tiếng làm thử lại xem.

On May 4, 2017 12:18 PM, "Tu Nguyen" notifications@github.com wrote:

@thanhtungtnt https://github.com/thanhtungtnt share link của file source đó coi thử với nhé, mình đặt biết flag (biết flag đó thì mình set LocalStorage) có điều hạn chế của LocalStorage là phải load lại game lần nữa thì nó mới get value của cái current => tốt nhất là lưu cache khi người dùng đang còn trong game đó.

Android nó lỗi như nào? toggleMute: function() { if (!this.game.sound.mute) { this.game.sound.mute = true; this.soundButton.tint = 16711680; } else { this.game.sound.mute = false; this.soundButton.tint = 16777215; } },

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nvminhtu/LearnPhaser/issues/42#issuecomment-299098763, or mute the thread https://github.com/notifications/unsubscribe-auth/AYHlqtSdxwxgTZ0bYMZAysMX3oD7XbXaks5r2V-agaJpZM4NQNPU .

nvminhtu commented 7 years ago

@thanhtungtnt Nếu khó thì có thể dùng 1 cách sau để thay thế, ko sử dụng game.sound của Phaser. => tự load âm thanh vào, mỗi lần mở app sẽ cho chạy hàm audio đó. => chỉ cần if else nếu có lưu vào localStorage rồi thì phát/không phát. => Khi click mute/not-mute thì chỉ cần sử dụng hàm play và pause

nvminhtu commented 7 years ago

4. Giá trị của World (ví dụ screen của chúng ta thì có giới hạn, tuy nhiên world game chúng ta có thể setup thành 1 màn dài - ví dụ 1 cánh rừng dài miên man) => đó là lý do setup word.width. => Câu hỏi rút ra ở đây là: cần phân biệt game.width và world.width.

nvminhtu commented 7 years ago

**5. Khi style và tạo background cho game thì khi chúng ta thêm background nó chỉ có tác dụng trong Stage đó.** var game = new Phaser.Game(420, 740, Phaser.AUTO,'');

Nhưng vì sử dụng scale theo tỉ lệ chúng ta cũng ko làm cho screen game có thể full màn hình được => vì thế chúng ta cần style background cho cả viền ngoài (nếu được và hợp lý) => nhằm tạo cảm giác FULL toàn bộ. https://gyazo.com/9a2bbe6401b3fb8c149671b9c01a73f2

this.game.backgroundColor = '#fff'; => không có tác dụng (vô nghĩa) this.game.stage.backgroundColor = '#fff'; => chỉ trong phạm vi của gamescreen.
Do đó ta cần style CSS cho body bên ngoài là được

@lamanhdai