Анімація як масив зображень

Завантажте приклад проекту. В архіві містяться всі необхідні файли, зображення, модуль loadImages тощо.

файл проекту



Кілька зображень, які змінюють одне одного, утворюють анімацію.


Процедура void draw() виконується постійно (після завершення виконання попередньої такої процедури виконується наступна). Тому, якщо у цій процедурі розмістити команду відображення картинки на полотні, і передбачити зміну цієї картинки щоразу при запуску процедури, отримаємо анімацію, або відео-ролик.


Для того, щоб у проекті можна було взаємодіяти з деякою кількістю зображень, слід їх оголосити у вигляді масиву film.

PImage [] film;

Змінна int kadr =0; зберігатиме значення номера поточного зображення (і спочатку цей номер буде 0).


Для коректної роботи потрібно сформувати папку з набором зображень, що утворюють анімацію. Ці файли зображень повинні мати однотипні назви накшталт movie0- movie134, і розмістити їх потрібно у каталозі data поточного проекту Processing.


У процедурі налаштувань проекту void setup() вказуємо завантаження цих зображень за допомогою процедури loadImages (її текст потрібно скопіювати на нову закладку проекту, яку назвати loadImages)


Текст закладки loadImages

film = loadImages("movie", ".jpg", 134);

У цій команді вказується загальний шаблон імен файлів із кадрами анімації(movie), розширення імені цих файлів, а також кількість файлів.


У процедурі малювання void draw()  буде показуватись одне із зображень масиву:

  // показ зображення номер currentPosition

  image(film[kadr], 0, 0);

  // перехід до наступного зображення

  kadr += 1;


Проаналізуємо запис цих команд.

film[kadr] - означає елемент номер kadr з масиву film

kadr += 1 означає збільшення значення змінної kadr на 1.

Потрібно передбачити перехід до першого кадру анімації, коли вона відтворилась повністю. Для цього виконується перевірка:

  if(kadr >= film.length)

  {

     kadr = 0;

  }

Проаналізуємо команду: якщо номер поточного кадру є більшим за загальну кількість кадрів (це довжина масиву film), то перейти до першого кадру (він має номер 0).


Пауза в анімації

Можна задати паузу у відтворенні анімації за клацанням миші. Для цього потрібно використати змінну логічного типу:

 boolean playing = false;

Тепер при переході до наступного номера кадру (команда kadr += 1 ) слід враховувати значення змінної playing, номер кадру збільшуємо якщо значення true:

  if(playing)

  {

    kadr += 1;

   }


У процедурі обробки натиснення клавіші миші void mousePressed(), слід змінити значення логічної змінної на протилежне від поточного:

playing = !playing;

Остання зміна: четвер 9 квітня 2020 8:05