Processing:Примеры/Анимационные спрайты: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
{{Processing панель перехода}}
{{Processing панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=Описание<ref>[https://processing.org/examples/animatedsprite.html processing.org - Animated Sprite (Shifty + Teddy) by James Paterson.]</ref>=
=Описание<ref>[https://processing.org/examples/animatedsprite.html processing.org - Animated Sprite (Shifty + Teddy) by James Paterson.]</ref>=
Строка 153: Строка 150:
<references />
<references />


{{SEO
|Заголовок статьи=Processing: Анимационные спрайты / Онлайн справочник - wikihandbk.com
|Ключевые слова=processing,Анимационные спрайты ,Анимационные спрайты в processing, пример Анимационные спрайты, пример Анимационные спрайты в processing
|Описание статьи=
|Изображение статьи для Open Graph=
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Processing:Примеры/Анимационные спрайты</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Ширина изображения статьи для schemaNewsArticle=
|Дата публикации для schemaNewsArticle=2018-07-25
|Автор=Мякишев Е.А.
|Издатель=myagkij
|Логотип издателя для schemaNewsArticle=<nowiki>http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg</nowiki>
|Ширина логотипа издателя для schemaNewsArticle=60
|Высота логотипа издателя для schemaNewsArticle=45
}}
{{Навигационная таблица/Портал/Processing}}
{{Навигационная таблица/Портал/Processing}}

Текущая версия от 07:52, 27 августа 2023

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


Описание[1]

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

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

Пример

Animation animation1, animation2;

float xpos;
float ypos;
float drag = 30.0;

void setup() {
  size(640, 360);
  background(255, 204, 0);
  frameRate(24);
  animation1 = new Animation("PT_Shifty_", 38);
  animation2 = new Animation("PT_Teddy_", 60);
  ypos = height * 0.25;
}

void draw() { 
  float dx = mouseX - xpos;
  xpos = xpos + dx/drag;

  // показываем спрайт на позиции xpos, ypos:
  if (mousePressed) {
    background(153, 153, 0);
    animation1.display(xpos-animation1.getWidth()/2, ypos);
  } else {
    background(255, 204, 0);
    animation2.display(xpos-animation1.getWidth()/2, ypos);
  }
}

// класс для анимированных GIF-изображений:
class Animation {
  PImage[] images;
  int imageCount;
  int frame;
  
  Animation(String imagePrefix, int count) {
    imageCount = count;
    images = new PImage[imageCount];

    for (int i = 0; i < imageCount; i++) {
      // при помощи nf() форматируем «i» в строку из 4 цифр:
      String filename = imagePrefix + nf(i, 4) + ".gif";
      images[i] = loadImage(filename);
    }
  }

  void display(float xpos, float ypos) {
    frame = (frame+1) % imageCount;
    image(images[frame], xpos, ypos);
  }
  
  int getWidth() {
    return images[0].width;
  }
}

См.также

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