Axiom Справочник языка

Тип, функции и операторы

Спрайты SPRITE

Кадры анимации удобно держать в одном файле-листе и выводить по одному, меняя только номер кадра. Такой лист описывает тип SPRITE; его загружает LOADSPRITE, размеры и число кадров сообщают SPRITEWIDTH, SPRITEHEIGHT и SPRITECOUNT, а выводит нужный кадр оператор DRAWSPRITE.

Лист кадров и его загрузка

Тип SPRITE хранит ссылку на спрайтовый лист и его разметку. Функция LOADSPRITE загружает лист с указанным размером кадра, а для анимации программа меняет номер кадра, передаваемый в DRAWSPRITE.

DIM <имя> AS SPRITE
LOADSPRITE(<путь>, <ширина кадра>, <высота кадра>)
SPRITEWIDTH(<спрайт>)
SPRITEHEIGHT(<спрайт>)
SPRITECOUNT(<спрайт>)
DRAWSPRITE <спрайт>, <кадр>, <координата X>, <координата Y>
DRAWSPRITE <спрайт>, <кадр>, <координата X>, <координата Y>, <ширина>, <высота>

Загрузка и чтение размеров выполняются над значением спрайта и не требуют графического окна. Оператор DRAWSPRITE требует графического режима SCREEN 1..10 или холста CANVAS.

Аргументы

ЧастьОписание
<имя свойства>Переменная типа SPRITE.
<путь>Передайте строковый путь к файлу изображения.
<ширина кадра>, <высота кадра>Передайте положительные размеры одного кадра в пикселях. Каждый перечисленный аргумент имеет тип LONG.
<спрайт>Передайте выражение типа SPRITE.
<кадр>Передайте номер кадра, начиная с 0. Передаваемое значение имеет тип LONG.
<координата X>, <координата Y>Передайте координаты левого верхнего угла вывода. Каждый перечисленный аргумент имеет тип LONG.
<ширина>, <высота>Передайте положительные размеры итогового вывода в пикселях. Каждый перечисленный аргумент имеет тип LONG.

Функция LOADSPRITE

LOADSPRITE читает изображение, разбивает его на прямоугольные кадры одинакового размера и возвращает значение типа SPRITE.

Синтаксис

LOADSPRITE(<путь>, <ширина кадра>, <высота кадра>)

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

Размеры и число кадров

SPRITEWIDTH возвращает INTEGER с шириной кадра в пикселях, SPRITEHEIGHT — с его высотой, а SPRITECOUNT — с числом доступных полных кадров листа.

SPRITEWIDTH(<спрайт>)
SPRITEHEIGHT(<спрайт>)
SPRITECOUNT(<спрайт>)

Оператор DRAWSPRITE

DRAWSPRITE выводит кадр с указанным номером на текущую поверхность. Без дополнительных размеров кадр выводится в натуральном размере, а с аргументами width и height масштабируется до заданного размера в пикселях.

DRAWSPRITE <спрайт>, <кадр>, <координата X>, <координата Y>
DRAWSPRITE <спрайт>, <кадр>, <координата X>, <координата Y>, <ширина>, <высота>

На экране координаты преобразуются настройками VIEW и WINDOW, а на холсте они мировые и учитывают камеру.

Порядок кадров и обрезка

Порядок кадров соответствует чтению изображения: слева направо, затем сверху вниз. Неполные участки изображения справа и снизу не образуют кадров, если размер листа не делится на размер кадра без остатка.

При присваивании копируется ссылка на лист, поэтому пиксели не дублируются. Вывод обрезается по доступным границам экрана или холста.

Проверка размеров DRAWSPRITE

Оператор DRAWSPRITE принимает явно заданные размеры вывода от 1 до 2147483647 пикселей включительно. Координаты должны быть целыми числами в диапазоне ±1 000 000 000. Нулевые, отрицательные или слишком большие размеры, недопустимые координаты и номер кадра вне спрайта вызывают MB3007 до рисования и изменения текущей позиции. При загрузке спрайтового листа действуют пределы исходного изображения.

Встроенная функция SPRITEWIDTH

SPRITEWIDTH возвращает ширину одного кадра в пикселях. Она читает свойства значения без графического окна, поэтому результат доступен сразу.

Синтаксис

SPRITEWIDTH(<спрайт>)

Аргумент

Передайте выражение типа SPRITE, свойства которого нужно прочитать. Пустая переменная после объявления допустима.

Результат, ограничения и диагностика

Функция возвращает INTEGER. Для пустого значения результат равен 0. Чтение свойства не загружает файл и не вызывает ошибку из-за пустого ресурса. Несовместимый тип или неверное число аргументов отклоняется компилятором.

Пример

DIM sheet AS SPRITE
PRINT SPRITEWIDTH(sheet)

Программа печатает 0, поскольку ресурс ещё не загружен. После успешной загрузки функция возвращает фактическое свойство.

См. также

Загрузка и рисование ресурса.

Встроенная функция SPRITEHEIGHT

SPRITEHEIGHT возвращает высоту одного кадра в пикселях. Она читает свойства значения без графического окна, поэтому результат доступен сразу.

Синтаксис

SPRITEHEIGHT(<спрайт>)

Аргумент

Передайте выражение типа SPRITE, свойства которого нужно прочитать. Пустая переменная после объявления допустима.

Результат, ограничения и диагностика

Функция возвращает INTEGER. Для пустого значения результат равен 0. Чтение свойства не загружает файл и не вызывает ошибку из-за пустого ресурса. Несовместимый тип или неверное число аргументов отклоняется компилятором.

Пример

DIM sheet AS SPRITE
PRINT SPRITEHEIGHT(sheet)

Программа печатает 0, поскольку ресурс ещё не загружен. После успешной загрузки функция возвращает фактическое свойство.

См. также

Загрузка и рисование ресурса.

Встроенная функция SPRITECOUNT

SPRITECOUNT возвращает количество полных кадров листа. Она читает свойства значения без графического окна, поэтому результат доступен сразу.

Синтаксис

SPRITECOUNT(<спрайт>)

Аргумент

Передайте выражение типа SPRITE, свойства которого нужно прочитать. Пустая переменная после объявления допустима.

Результат, ограничения и диагностика

Функция возвращает INTEGER. Для пустого значения результат равен 0. Чтение свойства не загружает файл и не вызывает ошибку из-за пустого ресурса. Несовместимый тип или неверное число аргументов отклоняется компилятором.

Пример

DIM sheet AS SPRITE
PRINT SPRITECOUNT(sheet)

Программа печатает 0, поскольку ресурс ещё не загружен. После успешной загрузки функция возвращает фактическое свойство.

См. также

Загрузка и рисование ресурса.