
官方教程位址
- 玩微信小遊戲前提基礎技能
JS ES6 寫法
- 小遊戲一個純jscore的程式,沒有DOM 操作 ;H5遊戲都是玩弄canvas;是以官方有個weapp-adapter.js,模拟了canvas
import './js/libs/weapp-adapter';
引入後,全局就會有一個canvas對象;Adapter下載下傳位址
- 單例類的寫法
let instance;
export default class Instant {
constructor() {
if (instance)
return instance;
instance = this;
//不管怎麼new xxx 不會是新的對象
this.xxx="xxxx";
}
}
調用
import Instant from './js/tt/instant';
let instant = new Instant();
或是在類裡
import Instant from './js/tt/instant';
export default class Main{
constructor() {
this.instant = new Instant();
}
}
- 時間軸 window.requestAnimationFrame
用法
let render= e => {
//重新整理邏輯
window.requestAnimationFrame(render, canvas);
}
window.requestAnimationFrame(render, canvas);
- 圖檔
let img = new Image();
img.src = 'images/enemy.png';
圖檔的x,y屬性是隻讀;
要重新整理位置得這麼玩
let img = new Image();
let ctx = canvas.getContext('2d');
img.src = 'images/enemy.png';
var render = e => {
//清空canvas内容
ctx.clearRect(0, 0, canvas.width, canvas.height);
//重新繪制img對象到canvas xx yy 是 滑鼠點選的坐标位置
ctx.drawImage(img, xx, yy, img.width, img.height);
window.requestAnimationFrame(render, canvas);
}
window.requestAnimationFrame(render, canvas);
let [xx, yy] = [0, 0];
canvas.addEventListener('touchstart', ((e) => {
e.preventDefault();
let x = e.touches[0].clientX;
let y = e.touches[0].clientY;
[xx, yy] = [x,y]
}));
- 按鈕互動事件 (好惡心)
居然隻能通過touch的 x y 屬性,與對象存在的位置 寬高 進行判斷比較!!!
官方教程代碼:
//遊戲結束後的觸摸事件處理邏輯
touchEventHandler(e) {
e.preventDefault()
let x = e.touches[0].clientX
let y = e.touches[0].clientY
let area = this.gameinfo.btnArea
if (x >= area.startX
&& x <= area.endX
&& y >= area.startY
&& y <= area.endY)
this.restart()
}
之前用過egret定位圖檔ui元素,也是各種x y ,非常累!!