Книга: Описание языка PascalABC.NET

Мультирисунки

Мультирисунки

Мультирисунок представляет собой объект класса MultiPictureABC и содержит несколько картинок одинакового размера (кадры мультирисунка), одна из которых отображается на экране.

Мультирисунки удобно использовать для графических объектов, имеющих несколько состояний. Например, для игрового объекта в мультирисунке хранятся все его повороты: вверх, вниз, вправо, влево. Мультирисунки удобно использовать также для создания спрайтов - анимационных рисунков с автоматически меняющимися кадрами. Однако, для спрайтов предназначен специальный класс SpriteABC, расположенный в модуле ABCSprites.

Рассмотрим создание мультирисунка из четырех рисунков, каждый из которых находится в отдельном файле:

uses ABCObjects,GraphABC;

var p: MultiPictureABC;

begin

p := new MultiPictureABC(50,50,'multi1.bmp');

p.Add('multi2.bmp');

p.Add('multi3.bmp');

p.Add('multi2.bmp');

end.

После запуска программы в графическом окне отображается рисунок из первого кадра.

Для смены рисунка достаточно изменить свойство CurrentPicture:

p.CurrentPicture := 2;

Можно также циклически перейти к следующему рисунку:

p.NextPicture;

или к предыдущему рисунку:

p.PrevPicture;

Нетрудно организовать анимацию, состоящую в последовательной циклической смене рисунков:

while True do

begin

p.NextPicture;

Sleep(100);

end;

Мультирисунок после создания хранится не в виде последовательности отдельных рисунков, а в виде одного длинного рисунка, в котором все кадры-рисунки расположены последовательно по горизонтали. Такой длинный рисунок можно сохранить в файл для последующего использования:

p.Save('multipic.gif');

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

p := new MultiPictureABC(50,50,100,'multipic.gif');

Третий параметр здесь указывает ширину одного кадра.

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

Оглавление книги


Генерация: 0.049. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз