Объявление многокадровой анимации одной короткой командой
Перейти к навигации
Перейти к поиску
Если вам лениво прописывать каждый кадр при создании многокадровой анимации, то это можно делать с помощью одной короткой функции Ani, код которой вы найдете по ссылке ниже. По умолчанию включено проигрывание анимации в обратную сторону. и можно задавать первую цифру. Т.е. если есть 5 кадров, начиная с img0 и заканчивая img4, то «image ani = Ani("img", 5, 1.0, start=0)» вернет зацикленную ежесекундную смену кадров 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4... и т.д. Отключается параметром reverse=False.
Кстати, можно добавлять эффекты для смены кадров.
# автоматическое объявление анимации
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
pause
return
- Ссылка на архив с проектом: test-ani.zip
- Источник: Renpy для чайников: Объявление многокадровой анимации одной короткой командой
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |