Создание флеш-анимации с помощью Canvas и HTML5

Это вопрос типа "где я могу начать".

Я изучаю работу HTML5 и Canvas, но чувствую, что искал не ту область.

Я хотел бы узнать, как создавать анимационные анимации типа мультиплеерного типа. Представьте себе этого плюшевого мишку: teddy bear image

Когда я нажимаю на нее мышь, я хочу заставить его пройтись по экрану, реализуя мои анимации "движущихся ног" и т.д. Когда я нажимаю, я хочу, чтобы он махал лапой.

С HTML5 и Javascript я могу заставить его двигаться/плавать поперек, но я не могу найти способ фактически НАЖАТЬ движения.

Создать небольшие файлы .mp4? Я создаю кучу изображений, чтобы прокрутить их? Анимированные GIF файлы? Я хотел бы держаться подальше от вспышки...

Я думал, что HTML5 с анимацией Canvas позволит мне достичь того, что я хочу, кроме как рисовать простые анимации фигур и работу с видео. Я не могу найти учебники или статьи "Как".

Как я могу достичь того, что я пытаюсь сделать или мне нужно искать в другом месте? Я был бы признателен, если бы он был направлен в правильном направлении.

Изменить: во время исследования я столкнулся с следующей игрой: http://www.cuttherope.ie/ Как, например, монстр анимируется в чем-то подобном?

Ответы

Ответ 1

Если целью упражнения является изучение HTML5 и холста, то, вероятно, не для вас. Если вам нужно как можно быстрее и проще создать свою тедди-анимацию и доставить ее с использованием технологий, основанных на стандартах, то я предлагаю вам загрузить и изучить предварительный просмотр Adobe Край. Это инструмент для создания движений и взаимодействия, похожий на Flash (временная шкала и ключевые кадры), который выводит комбинацию HTML, CSS и JavaScript. Я не играл с версией предварительного просмотра, но я уверен, что он будет способен создавать такую ​​анимацию, о которой вы говорите.

Update:

Вы также можете рассмотреть Zoë, который можно использовать для экспорта анимации SWF непосредственно на страницы спрайтов. Он был создан командой, которая разработала Canvas library easel.js и может экспортировать сопровождающие данные фрейма как JSON или easel.js. Это позволит вам создавать свои анимации во Flash (что, пусть оно и есть, по-прежнему является лучшим инструментом для веб-анимации), но визуализировать их с помощью HTML.

Ответ 2

Холст поможет вам здесь.

Анимация обычно выполняется просто путем циклического перехода через различные файлы PNG (или spritemap с разными изображениями). Вот пример jsfiddle Недавно я показал, что на холсте показана простая анимация:

var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

var image = new Image();

var drawTile = function(x, y, tile, width, height) {
    context.drawImage(image, (tile % 6) * width, Math.floor(tile / 6) * height, width, height, x, y, width, height);
};

image.onload = function() {
    // draw all 12 tiles:
    var i = 0;
    setInterval(function() {
        context.clearRect(0,0,500,500);
        drawTile(0, 0, i, 48, 32);
        i++;
        if (i > 11) i = 0;
    }, 85);
}
image.src = 'http://i.stack.imgur.com/qkWe2.png';

Если вы посмотрите на изображение в примере, вы получите представление о том, как выглядит карта спрайтов для анимации:

enter image description here

Велоспорт думал, что спрайты в таком изображении на основе таймера - это все, что вам нужно!


Создание и перемещение кликабельных, выбираемых объектов на холсте требует немного усилий. Там нет ничего встроенного для обнаружения объекта на холсте. Но если вы сделали программирование до того, как это не слишком сложно, и я написал популярное учебное пособие по этому вопросу, которое служит очень нежный ввод. Это должно помочь вам.

Кроме этого, ваш лучший ресурс, конечно же, переполнение стека.:) Мы всегда будем рады ответить на отдельные вопросы, когда вы столкнетесь с ними.

Ответ 4

Я быстро поклоняюсь более образованному ответу, но я бы угадал, что вы хотите сделать, может быть слишком много для производительности canvas/javascript в браузере.

Если вы являетесь аниматором по профессии, это может показаться не такой утомительной задачей, но я предполагаю, что вы напишете много кода, чтобы оживить запутанные пути и заполнить их и т.д.

Я уверен, что вы исследовали, но есть многочисленные javascript-библиотеки холстов. Бумага js приходит на ум или обработка js. Они могут указать вам в приличном направлении, если вы посмотрите их примеры/возможности относительно путей и анимации.

Ответ 5

Как я вижу, есть две проблемы:

  • Дайте движению медведя внутри себя (ноги как минимум)
  • Переместите медведя по экрану.

Борьба этих двух дает вам вид медведя, идущего по экрану (в отличие от простого перемещения по экрану или ходьбы). Похоже, вы уже решили проблему №1.

Чтобы заняться # 2, лучше всего иметь изображение за кадр. Попытка нарисовать медведя в другом положении для каждого кадра - пустая трата времени. Если вы предварительно загрузите образы кадров, вы можете взять стоимость один раз в начале, и вы просто показываете другое изображение, когда он идет.

Теперь, это работа для холста? Я не знаю. Я думаю, вы, вероятно, могли бы создать то, что я описал в "старой школе" HTML/JavaScript/CSS. Платформа зависит от вас, но ключевыми понятиями здесь являются рамки - и, более конкретно, изображение для каждого кадра.