Я делаю javascript / canvas игру и я видел этот пример на CSS Tricks.Вот ссылка http://css -tricks.com / 9876-learn-canvas-snake-game / # comment-100804
В любом случае, мне интересно, потому что я рефакторинг своей игрыкод, и создание моих собственных объектов, и до сих пор это выглядит как хороший образец для использования.
Для меня это выглядит как шаблон модуля раскрытия, о котором я читал на http://addyosmani.com/resources/essentialjsdesignpatterns/book/
Так я прав?
/* NOTE: this is just a snippet from the example, go to the link to see the
finished example */
var JS_SNAKE = {};
JS_SNAKE.game = (function () {
var ctx;
JS_SNAKE.width = 200;
JS_SNAKE.height = 200;
JS_SNAKE.blockSize = 10;
var frameLength = 500; //new frame every 0.5 seconds
var snake;
function init() {
$('body').append('<canvas id="jsSnake">');
var $canvas = $('#jsSnake');
$canvas.attr('width', JS_SNAKE.width);
$canvas.attr('height', JS_SNAKE.height);
var canvas = $canvas[0];
ctx = canvas.getContext('2d');
snake = JS_SNAKE.snake();
bindEvents();
gameLoop();
}
function gameLoop() {
ctx.clearRect(0, 0, JS_SNAKE.width, JS_SNAKE.height);
snake.advance();
snake.draw(ctx);
setTimeout(gameLoop, frameLength); //do it all again
}
function bindEvents() {
var keysToDirections = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
$(document).keydown(function (event) {
var key = event.which;
var direction = keysToDirections[key];
if (direction) {
snake.setDirection(direction);
event.preventDefault();
}
});
}
return {
init: init
};
})();
Кроме того, есть ли лучший шаблончто я должен использовать при создании объектов в игре javascript / canvas?
Если вы хотите проверить мою игру, перейдите на мой сайт.http://magnut.comze.com
Игра, которую я создал, называется Fruit Blitz, и следующее обновление, над которым я сейчас работаю, станет большим, с врагами, усилениями и прочим.