Автоматическое объявление анимации



(http://renpyfordummies.blogspot.ru/2015/06/init-python-def-ani-imgname-frames.html) init python: """ описание функции Ani: автоматическое объявление картинки с анимацией, например есть кадры "images/neko%s.png", где %s - числа от 1 до 5, тогда объявляем анимацию так: image neko = Ani("neko", 5, 0.5, reverse = False) где: img_name - имя файла без номера (например, "neko") frames - количество кадров delay - пауза между кадрами в секундах loop - зациклить анимацию (по умолчанию включено) reverse - нужно ли проигрывание анимации в обратную сторону effect - эффект для смены кадров start - с какой цифры начинать отсчет кадров ext - расширение файлов (по умолчанию png) """ def Ani(img_name, frames, delay=.1, loop=True, reverse=True, effect=None, start=1, ext="png", **properties):   args = []   for i in range(start, start + frames):       args.append(renpy.display.im.image(img_name + str(i) + "." + ext))       if reverse or loop or (i < start + frames - 1):           args.append(delay)           args.append(effect)   if reverse: # обратная анимация, если нужна       for i in range(start + frames - 2, start, -1):           args.append(renpy.display.im.image(img_name + str(i) + "." + ext))           if loop or (i > start + 1):               args.append(delay)               args.append(effect)   return anim.TransitionAnimation(*args, **properties) init: # эффект dissolve в полсекунды с учетом прозрачности $ dd = Dissolve(.5, alpha=True) # 5 кадров, смена раз в полсекунды и эффектом для смены кадров # по умолчанию зациклена и с обратным ходом image neko = Ani("neko", 5, .5, effect=dd) label start: show expression "bg_room.jpg" show neko pausereturn

 

Список трансформаций

 

Смена фона с переходом (например, растворение)

· image pic1 = "risunok_1.png"

· image pic2 ="risunok_2.png"

·

· image pic_anim:

· "pic1" with dissolve

· pause 1.0

·     "pic2" with dissolve

· pause 1.0

· repeat

·

· label start :

· scene pic _ anim

Так же можно и спрайты с кнопками применить данную трансформацию

Телепорт

· image pic1 = "risunok_1.png"

· transform teleport:

· xalign 1.0 yalign 0.0

· pause 1.0

· xalign 0.0

· repeat

· label start:

· show pic1 at teleport

 

И наш спрайт (или фон если вместо show будет scene ) будет телепортироваться (мгновенно менять свои координаты) (с xalign 1.0 (т.е. с левой стороны) на xalign 0.0 (на правую сторону)

Интерполяция времени linear

Интерполяция – плавное смещение значений трансформации, от старого к новому.


Пример на телепорте, добавим в него интерполяцию времени linear (таймер по сути своей, но не совсем таймер)

Интерполяции всегда пишутся вначале изменений старого и нового значения (пример справа налево)

· transform move_pra_lev:

·     xalign 1.0 yalign 0.0

· linear 3.0 xalign 0.0

· pause 1.0

· repeat

· label start:

·     show pic1 at move_pra_lev

И получаем, что объект, будет плавно перемещаться по экрану, за 3 сек. (Вы можете спокойно скорость передвижения изменить, поменяв значение linear)

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

· transform z_z:

·     xalign .3 yalign .7

·     linear 1.0 xalign .7 yalign .3

· linear 1.0 xalign .3 yalign .7

· repeat

· label start:

·     show logo base at z_z

ZOOM ZOOM

Zoom позволяет нам увеличивать или уменьшать изображение, делая его больше или меньше.
Пишется он очень просто. Можно через анимацию алт или трансформацию.

Анимация

· image pic 1 = " risunok _1. png " ###спрайт девушки в гневе

· image pic 2 = " risunok _2. png "###спрайт парень в шоке

· label start :

· show pic 1 ###спрайт девушки в гневе

·     "Она" "Я беременна!"

· show pic 1: ### Девушка плавно увеличилась

·     zoom 1.0

·     linear 1.0 zoom 1.5

· show pic 2 at right : ###парень плавно уменьшился

·     zoom 1.0

·     linear 1.0 zoom 0.5

· " Он " " Оп - па …."

И вот так их прописывают в трансформацию

· transform hana:

· zoom 1.0

· linear 1.0 zoom 1.5

· transform hana_emy:
zoom 1.0 xalign 1.0
linear 1.0 zoom 1.5 xalign 1.0

· image pic1 = "risunok_1.png" ### спрайт девушки в гневе
image pic2 = "risunok_2.png"### спрайт парень в шоке

·

· label start:

· show pic 1

·     "Она" "Я беременна!"

· show pic 1 at hana ### Девушка плавно увеличилась

· show pic2 at hana_emy

· " Он " " Оп - па …."

Так же помимо одновременного изменения всего изображения,можно по отдельности изменять значение х и у.
Пишется все это через xzoom и yzoom . Пример

· transform hana:

· zoom 1.0

· linear 1.0 zoom 1.5

· transform hana_emy:

· zoom 1.0 xalign 1.0

· linear 1.0 zoom 1.5 xalign 1.0

· transform toshnotiki:

· xzoom .75 yzoom 1.25

· linear 1.0 xzoom 1.25 yzoom .75

· linear 1.0 xzoom .75 yzoom 1.25

· repeat

· image pic 1 = " risunok _1. png " ###спрайт девушки в гневе

· image pic 2 = " risunok _2. png "###спрайт парень в шоке

· image pic 1_1 = " risunok _3. png "### спрайт девушки вся зеленая, плохо ей

· label start :

·     show pic 1_1 at toshnotiki

· "Меня тошнит"

·     "Звук, как кто-то свой завтрак керамическому другу отдает"

· scene black

·     show pic 1

· "Она" "Я беременна!"

·     show pic1 at hana

·     show pic2 at hana_emy

·     " Он " " Оп - па …."

А приведя значения в отрицательное значение xzoom и yzoom мы отразим обьект(зеркально) по гориз и вертикали

show logo base:

   linear 1.0 xzoom -1.0 yzoom 1.0

Size

Данный оператор позволяет нам задать изображению размер (Сразу вспоминается момент, когда хотел сделать в проекте несколько разрешений экрана при помощи данного оператора, говорю сразу бесполезная затея, поэтому лучше не тратьте время зря)

· show logo base:

· size (300, 450)

И изображение будет иметь разрешение 300 на 450

 

Альфа

Данный оператор задает прозрачность к применяемому объекту.

· transform vszhik:

·     alpha 1.0

·     linear 1.0 alpha 0.0

· linear 1.0 alpha 1.0

· repeat

· label start:

· show pic_1 at vszhik

Rotate .


Нам требуется, что бы изображение крутилось вокруг себя, в этом нам поможет Rotate .
Пример на 360 градусов

· show logo base :

· xpos 0.5 ypos 0.5 xanchor 0.5 yanchor 0.5 ###задаем координату, не обязательно,но я задал по середине, и еще Так как вращение может изменить размер я поставил xanchor 0.5 yanchor 0.5

· rotate 0

· linear 4.0 rotate 360 ### на 360 градусов

· repeat

С rop . Обрезка

Вам требуется что бы персонаж выглядывал из за угла, или с одеяла(видел пример такой) или половина тела(берегись поез………………..) то вызывают оператора С rop .

· show logo base:

·     crop (0, 0, 100, 307)
Где в скобке указанно как оно будет обрезана.

Так же через него можно сфокусироваться(приблизить) на изображении

show bg washington:

   crop (0, 0, 800, 600)

   size (1280, 720)

   linear 4.0 crop (451, 437, 409, 230)

Алт трансформация

Так как стандартные блоки(left, right, center….и т.д) являются трансформациями, то мы можем их просто записать как они есть.

· show eileen happy:

·     right

· pause 1.25

· left

· pause 1.25

· repeat


Дата добавления: 2018-10-27; просмотров: 964; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!