Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Анимационные спрайты

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

Нажмите на кнопку мыши, чтобы изменить анимацию. Демонстрирует, как загружать, показывать и анимировать GIF-изображения.

Несложно написать программу, просто показывающую анимированные GIF’ки, но требуется чуть больше труда, чтобы добавить в нее функционал, с помощью которого пользователь мог бы управлять тем, какую именно анимацию следует показывать.

Пример

  1. Animation animation1, animation2;
  2.  
  3. float xpos;
  4. float ypos;
  5. float drag = 30.0;
  6.  
  7. void setup() {
  8.   size(640, 360);
  9.   background(255, 204, 0);
  10.   frameRate(24);
  11.   animation1 = new Animation("PT_Shifty_", 38);
  12.   animation2 = new Animation("PT_Teddy_", 60);
  13.   ypos = height * 0.25;
  14. }
  15.  
  16. void draw() {
  17.   float dx = mouseX - xpos;
  18.   xpos = xpos + dx/drag;
  19.  
  20.   // показываем спрайт на позиции xpos, ypos:
  21.   if (mousePressed) {
  22.     background(153, 153, 0);
  23.     animation1.display(xpos-animation1.getWidth()/2, ypos);
  24.   } else {
  25.     background(255, 204, 0);
  26.     animation2.display(xpos-animation1.getWidth()/2, ypos);
  27.   }
  28. }
  29.  
  30. // класс для анимированных GIF-изображений:
  31. class Animation {
  32.   PImage[] images;
  33.   int imageCount;
  34.   int frame;
  35.  
  36.   Animation(String imagePrefix, int count) {
  37.     imageCount = count;
  38.     images = new PImage[imageCount];
  39.  
  40.     for (int i = 0; i < imageCount; i++) {
  41.       // при помощи nf() форматируем «i» в строку из 4 цифр:
  42.       String filename = imagePrefix + nf(i, 4) + ".gif";
  43.       images[i] = loadImage(filename);
  44.     }
  45.   }
  46.  
  47.   void display(float xpos, float ypos) {
  48.     frame = (frame+1) % imageCount;
  49.     image(images[frame], xpos, ypos);
  50.   }
  51.  
  52.   int getWidth() {
  53.     return images[0].width;
  54.   }
  55. }

См.также

Внешние ссылки

  1. processing.org - Animated Sprite (Shifty + Teddy) by James Paterson.