iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
1
Modern Web

以前端角度探討遊戲化的資訊設計系列 第 8

Day 08 - JS 型別守護者 TypeScript

改寫原本的 Day 06 的 ScenesManger
switch scence with ScenesManager by ts

  • private: 私有屬性
  • public: 公有屬性
  • void: 用於function的回傳值定義,代表這個function不會回傳任何值
  • function(arg): Type{} : 代表這個 function 回傳值為這個 type
    ex: public goToScene(id: string): bool { ... return false} 回傳布林值
class ScenesManager {
	private static scenes: any = {}; // should be hashmap but a JS object is fine too :)
  public static currentScene: Scene;

	public create(width: number, height: number, scale:bool=false) {
			// requestAnimFrame(ScenesManager.loop);
			var canvas = document.getElementById('canvas')
			canvas.width = width
			canvas.height = height
			return this;
	}
	public createScene(id: string, TScene: void) {
		console.log('id: ', id)
				console.log('TScene: ', TScene)
			if (ScenesManager.scenes[id]) return undefined;
			// if (ScenesManager.scenes[id]) return undefined;

			// var scene = new TScene();

		ScenesManager.scenes[id] = TScene;
		console.log('ScenesManager.scenes: ', ScenesManager.scenes)

			// return scene;
	}

  public clearScene() {
		var canvas = document.getElementById('canvas')
		var ctx = canvas.getContext('2d');
		ctx.clearRect(0, 0, canvas.width, canvas.height);
	}
	public goToScene(id: string): bool {
		this.clearScene()
		if (ScenesManager.scenes[id]) {
				// if (ScenesManager.currentScene) ScenesManager.currentScene.pause();
				ScenesManager.currentScene = ScenesManager.scenes[id];
				// ScenesManager.currentScene.resume();
				ScenesManager.scenes[id]()
				return true;
		}
		return false;
		}
}

上一篇
Day 07 - 調整程式內部的變數 Dat.gui
下一篇
Day 09 - simple change direction
系列文
以前端角度探討遊戲化的資訊設計13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言