Класс SpriteABC
Класс SpriteABC
Класс SpriteABC является потомком класса MultiPictureABC и представляет графический объект Спрайт, автоматически анимирующий на экране последовательность рисунков. Спрайты также могут иметь несколько состояний, каждое из которых представляет собой анимацию рисунков.
Конструкторы класса SpriteABC
constructor Create(x,y: integer; fname: string);
Создает спрайт, загружая его из файла с именем fname. Имя fname может быть либо именем графического файла, либо именем информационного файла спрайта с расширением .spinf. Если имя является именем графического файла, то создается спрайт с одним кадром. Остальные кадры добавляются методом Add. После этого при необходимости добавляются состояния методом AddStates и вызывается метод CheckStates. Если файл имеет расширение .spinf, то он содержит информацию о кадрах и состояниях спрайта и должен сопровождаться соответствующим графическим файлом. После создания спрайт отображается на экране в позиции (x,y)
constructor Create(x,y,w: integer; fname: string);
Создает спрайт, загружая его из файла fname. Файл должен хранить рисунок, представляющий собой последовательность кадров одного размера, расположенных по горизонтали. Каждый кадр считается имеющим ширину w. Если ширина рисунка в файле fname не кратна w, то возникает исключение. После этого при необходимости добавляются состояния методом AddStates и вызывается метод CheckStates После создания спрайт отображается на экране в позиции (x,y)
constructor Create(x,y,w: integer; p: Picture);
Создает спрайт, загружая его из объекта p: Picture. Он должен хранить рисунок, представляющий собой последовательность кадров одного размера, расположенных по горизонтали. Каждый кадр считается имеющим ширину w. Если ширина рисунка не кратна w, то возникает исключение. После этого при необходимости добавляются состояния методом AddStates и вызывается метод CheckStates. После создания спрайт отображается на экране в позиции (x,y)
constructor Create(g: SpriteABC);
Создает спрайт - копию спрайта g
Свойства класса SpriteABC
property StateName: string;
Имя состояния
property State: integer;
Номер состояния (от 1 до StateCount)
property StateCount: integer;
Количество состояний. Свойство доступно только на чтение
property Speed: integer;
Скорость спрайта (1..10)
property Active: boolean;
Активность спрайта: True, если спрайт активен (т.е. происходит его анимация), и False в противном случае
property Frame: integer;
Текущий кадр в текущем состоянии
Методы класса SpriteABC
procedure AddState(name: string; count: integer);
Добавляет состояние к спрайту. После добавления всех состояний следует вызвать CheckStates
procedure CheckStates;
Проверяет корректность набора состояний. Вызывается после добавления всех состояний
procedure SaveWithInfo(fname: string);
Сохраняет графический и информационный файлы спрайта. Имя fname задает имя графического файла. Информационный файл сохраняется в тот же каталог, что и графический, имеет то же имя и расширение .spinf
procedure NextFrame;
Переходит к следующему кадру в текущем состоянии
procedure NextTick;
Переходит к следующему тику таймера; если он равен ticks, то он сбрасывается в 1 и вызывается NextFrame
function FrameCount: integer;
Возвращает количество кадров в текущем состоянии
function FrameBeg: integer;
Возвращает начальный кадр в текущем состоянии
function Clone: SpriteABC;
Возвращает клон объекта
Свойства, унаследованные от класса MultiPictureABC
property CurrentPicture: integer;
Номер текущего рисунка
property Count: integer;
Количество рисунков в наборе
Методы, унаследованные от класса MultiPictureABC
procedure Add(fname: string);
Добавляет рисунок к спрайту, загружая его из файла fname. Рисунок должен иметь те же размеры, что и все рисунки из набора
procedure ChangePicture(fname: string);
Меняет набор рисунков на набор, состоящий из одного рисунка, загружая его из файла с именем fname
procedure ChangePicture(w: integer; fname: string);
Меняет набор рисунков на набор, загружая его из файла с именем fname. Файл должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w
procedure NextPicture;
Циклически переходит к следующему рисунку из набора
procedure PrevPicture;
Циклически переходит к предыдующему рисунку из набора
function Clone: MultiPictureABC;
Возвращает клон набора рисунков
Свойства, унаследованные от класса ObjectABC
property Left: integer;
Отступ графического объекта от левого края
property Top: integer;
Отступ графического объекта от верхнего края
property Width: integer;
Ширина графического объекта
property Height: integer;
Высота графического объекта
property dx: integer;
x-координата вектора перемещения объекта при вызове метода Move. По умолчанию установлено в 0. Для неподвижных объектов может быть использовано для хранения любой дополнительной информации, связанной с объектом
property dy: integer;
y-координата вектора перемещения объекта при вызове метода Move. По умолчанию установлено в 0. Для неподвижных объектов может быть использовано для хранения любой дополнительной информации, связанной с объектом
property Center: Point;
Центр графического объекта
property Position: Point;
Левый верхний угол графического объекта
property Visible: boolean;
Видим ли графический объект
property Color: GColor;
Цвет графического объекта
property FontColor: GColor;
Цвет шрифта графического объекта
property Text: string;
Текст внутри графического объекта
property TextVisible: boolean;
Видимость текста внутри графического объекта
property TextScale: real;
Масштаб текста относительно размеров графического объекта, 0<=TextScale<=1. При TextScale=1 текст занимает всю ширину или высоту объекта. По умолчанию TextScale=0.8
property FontName: string;
Имя шрифта для вывода свойства Text
property FontStyle: FontStyleType;
Стиль шрифта для вывода свойства Text
property Number: integer;
Целое число, выводимое в центре графического объекта. Для вывода используется свойство Text
property RealNumber: real;
Вещественное число, выводимое в центре графического объекта. Для вывода используется свойство Text. Вещественное число выводится с одним знаком после десятичной точки
property Owner: ContainerABC;
Владелец графического объекта, ответственный также за перерисовку графического объекта внутри себя (по умолчанию nil)
Методы, унаследованные от класса ObjectABC
procedure MoveTo(x,y: integer);
Перемещает левый верхний угол графического объекта к точке (x, y)
procedure MoveOn(a,b: integer);
Перемещает графический объект на вектор (a, b)
procedure Move; override;
Перемещает графический объект на вектор, задаваемый свойствами dx, dy
procedure Scale(f: real); override;
Масштабирует графический объект в f раз (f>1 - увеличение, 0<f<1 - уменьшение)
procedure ToFront;
Переносит графический объект на передний план
procedure ToBack;
Переносит графический объект на задний план
function Bounds: System.Drawing.Rectangle;
Возвращает прямоугольник, определяющий границы графического объекта
function PtInside(x,y: integer): boolean; override;
Возвращает True, если точка (x, y) находится внутри графического объекта, и False в противном случае
function Intersect(g: ObjectABC): boolean;
Возвращает True, если изображение данного графического объекта пересекается с изображением графического объекта g, и False в противном случае. Белый цвет считается прозрачным и не принадлежащим объекту
function IntersectRect(r: System.Drawing.Rectangle): boolean;
Возвращает True, если прямоугольник графического объекта пересекается прямоугольником r, и False в противном случае
function Clone0: ObjectABC; override;
Возвращает клон графического объекта
procedure Draw(x,y: integer; g: Graphics); override;
Защищенная. Не вызывается явно. Переопределяется для каждого графического класса. Рисует объект на объекте g: Graphics
destructor Destroy;
Уничтожает графический объект