당신은 그것을 백만 가지 방법으로 할 수 있습니다. 그러나 가장 편안한 느낌과 엔지니어는 가장 자신감을 느낍니다.
영감이나 코드 예제를 찾고 있다면 여기에 한 가지 방법이 있습니다. 버튼을 누를 때까지 메뉴를 반복적으로 그리는 기능이 있습니다. 버튼을 누르면 게임이로드되고 이전 메뉴 클릭 이벤트 리스너가 제거되고 새 게임 클릭 이벤트 리스너가 추가됩니다. 메뉴의 이전 그리기 루프를 끝내고 새로운 게임 그리기 루프를 시작합니다. 선택된 스 니펫은 다음과 같습니다.
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) {
// ...
}
이렇게하면 게임 드로잉과 게임 이벤트를 메뉴 드로잉 및 메뉴 이벤트와 분리 할 수 있습니다. 또한 메뉴에서 게임 / 애니메이션 요소를 사용하여 실제처럼 보이게 만들 수있는 여유가 있습니다.