คุณสามารถทำมันได้หลายล้านวิธี อย่างไรก็ตามคุณรู้สึกสะดวกสบายที่สุดและวิศวกรของคุณรู้สึกมั่นใจมากที่สุด
หากคุณกำลังมองหาแรงบันดาลใจหรือตัวอย่างรหัสนี่เป็นวิธีหนึ่งที่ฉันทำได้ ฉันมีฟังก์ชั่นที่ดึงเมนูซ้ำ ๆ จนกระทั่งกดปุ่ม เมื่อกดปุ่มเกมจะโหลดและผู้ฟังเหตุการณ์คลิกเมนูเก่าจะถูกลบและมีการเพิ่มผู้ฟังเหตุการณ์คลิกเกมใหม่ ฉันยังจบวนรอบการวาดเก่าของเมนูและเริ่มการวนรอบการวาดเกมใหม่ ต่อไปนี้เป็นตัวอย่างข้อมูลบางส่วนที่เลือกไว้เพื่อให้คุณทราบถึงวิธีการทำงาน:
Game.prototype.loadMenu = function() {
var game = this;
var can = this.canvas;
// now we can use the mouse for the menu
can.addEventListener('click', game.menuClickEvent, false);
can.addEventListener('touchstart', game.menuClickEvent, false);
// draw menu
this.loop = setInterval(function() { game.drawMenu() }, 30);
};
Game.prototype.drawMenu = function() {
// ... draw the menu
}
Game.prototype.loadLevel = function(levelstring) {
// unload menu
var can = this.canvas;
var game = this;
can.removeEventListener('click', game.menuClickEvent, false);
can.removeEventListener('touchstart', game.menuClickEvent, false);
if (this.loop) clearInterval(this.loop);
// ... other level init stuff
// now we can press keys for the game
//can.addEventListener('click', game.gameClickEvent, false);
can.addEventListener('touchstart', game.gameClickEvent, false);
can.addEventListener('keydown', game.gameKeyDownEvent, false);
this.loop = setInterval(function() { game.tick() }, 30);
}
// called from tick()
Game.prototype.draw = function(advanceFrame) {
// ...
}
ด้วยวิธีนี้ฉันสามารถแยกออกจากการวาดเกมและกิจกรรมเกมจากการวาดเมนูและกิจกรรมเมนู นอกจากนี้ยังทำให้ฉันมีเวลามากขึ้นในการใช้องค์ประกอบของเกม / แอนิเมชั่นในเมนูของฉันถ้าฉันต้องการทำให้มันดูสวย