重新架構的Base2,相比Base少了很多功能,包括Pixi/Sound/ResourceManager/Physics/geoms都被拿掉,只留最主要的CG功能。
// 取得專案代碼
CG.Base2.projectCode;
// 取得資源
CG.Base2.getAppResource(resourceAlias: string)
// 取得資源網址
CG.Base2.getAppResourceFileUrl(resourceAlias: string, filename?: string)
Base2內建了一個更新循環系統。
// 先定義一個每幀都要更新的函式
function updateFunc(dt: number) { }
// 將函式加入更新循環系統
CG.Base2.addUpdateFunction(updateFunc);
// 將函式移出更新循環系統
CG.Base2.removeUpdateFunction(updateFunc);
另外也提供子更新循環系統可使用。
import Updater = CG.Base2.utils.Updater;
// 先定義一個每幀都要更新的函式
function updateFunc(dt: number) { }
// 建立子更新循環系統
let updater = new Updater();
// 將函式加入更新循環系統
updater.addDelayFunction(updateFunc);
// 可暫停
updater.pause();
// 可繼續
updater.resume();
Base2提供了一個基本的鍵盤管理員,可以在按鍵被按下去(DOWN)、提起來(UP)、先按再提(PRESSED)的時候觸發事件。
// 取得鍵盤管理員
import Keyboard = CG.Base.keyboards.Keyboard;
import keyboard = CG.Base2.keyboard;
import Key = CG.Base2.keyboards.Key;
// 鍵盤事件
keyboard.on(Keyboard.EVENT.DOWN, (event: KeyboardEvent) => {
if (Key.SPACE.matchEvent(event)) {
// 當空白鍵被按下去的時候...
}
})
// 檢查目前按鍵狀態
if (keyboard.isDown(Key.SPACE)) {
// 目前空白鍵是正在按下去的狀態
}
Base2內建了tweenjs用來將某個物件的屬性,在一段時間內作動態的變化。
async function makeAnimation() {
// 建立一隻有x,y資料的動物
let animal = {
x: 100,
y: 100,
};
// 建立補間變化,在1秒內讓動物的x和y變化到指定的值
let tween = new TWEEN.Tween(animal);
tween.to(
{
x: 300,
y: 200,
},
1000 // 毫秒
);
tween.start();
// 等待變化完畢
await CG.Base2.waitTween(tween);
console.log(animal.x);
// 這時會印出 300
}
Base2內建JSZip。
async function loadZip() {
let zip = new JSZip();
await zip.loadAsync(buffer);
for(let filename in zip.files) {
...
}
}