Anthill Game Framework

Tiny framework for creating Flash games.

Инструменты пользователя

Инструменты сайта


anthill:antactor

AntActor

Данный класс является графической основой Anthill и отвечает за вывод статических и анимированных изображений на экран. То есть, проще говоря, AntActor — это класс, который занимается выводом изображений на экран и воспроизведением анимаций. Но особенность AntActor заключается в том, что он не содержит в себе никакой графической информации.

Работа с графикой в Anthill построена таким образом, что для всех анимированных или статических актеров используется один единственный экземпляр графики, хранящийся в AntAnimation. Таким образом, прежде чем AntActor сможет воспроизводить и отрисовывать какую-либо графическую информацию, необходимо добавить в него анимацию (AntAnimation).

Существует два способа добавления анимации в AntActor, это:

myActor.addAnimation(someAnimation);

Или

myActor.addAnimationFromCache("AnimName");

Как правило, второй способ используется чаще, так как Anthill создавался с расчетом на то, что прежде чем игра будет запущена, все графические ресурсы будут уже подготовлены (растеризированы) и помещены в хранилище анимаций. Подробнее о хранилище анимаций вы можете прочитать здесь...

В AntActor может быть помещено бесконечное количество анимаций, и между добавленными анимациями можно легко переключаться:

myActor.switchAnimation("AnimName");

В остальном функциональная часть AntActor очень напоминает типичный MovieClip, но есть и приятные мелочи.


Приятные мелочи

По умолчанию анимация зациклена, но если вы хотите, чтобы она проигралась один раз и остановилась, поставьте флаг repeat:

myActor.repeat = false;

Если необходимо проиграть анимацию в обратном порядке, то для этого следует установить флаг reverse:

myActor.reverse = true;

Иногда возникает необходимость в проигрывании анимации со случайного кадра:

myActor.playRandomFrame();

Если вам необходимо узнать о завершении проигрывания анимации, то достаточно добавить метод-обработчик в событие eventComplete:

myActor.eventComplete.add(onKill);

function onKill(aActor:AntActor):void
{
  aActor.eventComplete.remove(onKill); // Отписываемся от события
  aActor.kill(); // Убиваем актера после проигрывания анимации
}

И еще есть интересная возможность задавать режим смешивания цветов при отрисовке, что позволяет порой создавать интересные эффекты:

myActor.blend = "overlay";

Примечание: Полный список всех доступных режимов смешивания вы можете посмотреть здесь...

Так же доступно динамическое наложение цвета на актера без изменений основной анимации, например, данный эффект может пригодиться, если вам нужно подсвечивать (заставлять мерцать) врага, когда в него попадают пули игрока:

myActor.color = 0xFFFF0000;

Чтобы сбросить перекрытие цвета, присвойте значению color:

myActor.color = 0x00FFFFFF;

Имейте в виду, что динамическая подсветка требует дополнительного буфера1) и немного сказывается на оперативной памяти и производительности, если актер воспроизводит анимацию. Поэтому не следует злоупотреблять динамическим цветом.


1) Дополнительный буфер — это битмап в который отрисовывается текущий кадр, применяется наложение цвета, и только потом производится отрисовка в камеру. Если анимация не проигрывается, то наложение цвета рассчитывается в дополнительном буфере один раз при его применении.
anthill/antactor.txt · Последние изменения: 11.05.2013 00:13 — Илья Уткин