Добрый день. Как говорится в заголовке, я пытаюсь оживить 2d spritesheet на элементе canvas для простой 2d-игры, которую я делаю. Я просмотрел почти десяток статей и не нашел того, что искал, и это инструкции о том, как это сделать без помощи какой-либо библиотеки. Вы можете сказать мне, хорошо, сэр, вы сумасшедшие, если не собираетесь воспользоваться этой свободно доступной технологией, которая могла бы облегчить вашу жизнь. Мой ответ на это заключается в том, что я делаю это ради обучения, потому что я хочу стать лучшим разработчиком javascript и расти, чтобы писать большие и лучшие игры. При этом, я думаю, мой вопрос: как мне одушевить спрайт? (Я хочу, чтобы игрок мог вводить направления с помощью клавиш со стрелками) Не ошибитесь: я не прошу кого-либо написать код для меня, скорее я спрашиваю, где я могу найти ресурсы, чтобы научить себя, как это сделать мой собственный. Спасибо всем, очень ценим.Анимация спрайта на <canvas> БЕЗ библиотеки JS
ответ
Ответ: canvas + RequestAnimationFrame. Вот отличный учебник: http://www.williammalone.com/articles/create-html5-canvas-javascript-sprite-animation/
Я искал проект игры html5 + javascript 2d, чтобы присоединиться несколько месяцев назад. Если вам интересно, я хотел бы сотрудничать с вами в этом проекте. Просто дайте мне знать, и наслаждаться обучающей
Вы можете создать простой цикл анимации, создавая полотно в вашем HTML документе:
<canvas id="cvs"></canvas>
Это будет ваша «настольная игра»
Тогда вы можете создать файл javascript, в котором определяется игровой движок. Вы можете загрузить внешнее изображение внутри элемента изображения, как это:
var myImage = new Image();
myImage.src = "my-sprite-animation.png";
и определение спрайт:
var mySprite = sprite({
context: canvas.getContext("2d"),
width: 100,
height: 100,
image: coinImage
});
Затем с помощью метода requestAnimationFrame для создания цикла анимации:
function gameLoop() {
window.requestAnimationFrame(gameLoop);
mySprite.update();
mySprite.render();
}
Теперь я читаю этот учебник. Конечно, я думаю, что сотрудничество в 2-й игре может быть довольно хорошим опытом обучения для нас обоих. По правде говоря, я студент колледжа, и я никогда не сотрудничал с таким проектом. Мне бы хотелось обсудить больше и узнать ваши идеи о том, как мы будем это делать. – Streamer
Конечно, мой github - Azurasky1. – Streamer
Хорошо, пришлите мне письмо с информацией об этом проекте – andreasonny83
Вау, это, безусловно, мотивация :) Да, это можно сделать, поскольку функция 'canvasRenderingContext2d.drawImage()' принимает до 8 переменных, определяющих размер и положение изображения, и t он размер и положение коробки, которая отключает его. Потребуется некоторое время, чтобы понять все корреляции 'dx, sx, sy, dy, sw, sh, dh, dw', но в противном случае это то, что вам нужно. Читайте здесь: https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/drawImage - Btw, для решения ванильного javascript. Он учит вас гораздо больше о том, как работает программирование. – somethinghere
Хорошо, я взглянул на документацию, которую вы указали в своем комментарии. Я следил за ним до тех параметров, которые определяют свойства суб-прямоугольника. Было бы замечательно, если бы вы могли прояснить, для чего предназначена суб-прямоугольник. Теперь, когда я знаю, как рисовать изображение, как мне его оживить? – Streamer
Я бы с удовольствием, но я едва сам сломал эту поверхность. Это действительно требует некоторого привыкания, но я уверен, что если у вас есть время, это можно понять, играя с ним ... Кроме того, я, к сожалению, не успеваю поэкспериментировать и дать вам хороший ответ. Я сделал ставку в надежде, что вы привлечете кого-то, кто свободно говорит «drawImage» :) – somethinghere