Спрайты
Для создания спрайта используйте метод sprite.new, например:
lua
declare 'my_spr' (sprite.new 'gfx/bird.png')
local heart = sprite.new 'heart.png'
local blank = sprite.new (320, 200) -- пустой спрайт 320x200У созданного спрайтового объекта существуют следующие методы:
- :alpha(alpha) - создаёт новый спрайт с заданной прозрачностью alpha (255 - не прозрачно). Это очень медленная функция;
- :dup() - создаёт копию спрайта;
- :scale(xs, ys, [smooth]) -- масштабирует спрайт, для отражений используйте масштаб -1.0 (медленно! не для реального времени). Создаёт новый спрайт.
- :rotate(angle, [smooth]) -- поворот спрайта на заданный угол в градусах (медленно! не для реального времени). Создаёт новый спрайт.
- :size() -- Возвращает ширину и высоту спрайта в пикселях.
- :draw(fx, fy, fw, fh, dst_spr, x, y, [alpha]) -- Рисование области src спрайта в область dst спрайта (задание alpha сильно замедляет выполнение функции).
- :draw(dst_spr, x, y, [alpha]) -- Рисование спрайта, укороченный вариант; (задание alpha замедляет выполнение функции).
- :copy(fx, fy, fw, fh, dst_spr, x, y) -- Копирование прямоугольника fw-на-fh из спрайта в спрайт dst_spr по координатам [x,y] (рисование - замещение). Существует укороченный вариант (как :draw).
- :compose(fx, fy, fw, fh, dst_spr, x, y) -- Рисование - с учётом прозрачности обоих спрайтов). Существует укороченный вариант (как :draw).
- :fill(x, y, w, h, [col]) -- Заполнение спрайта цветом.
- :fill([col]) -- Заполнение спрайта цветом.
- :pixel(x, y, col, [alpha]) -- Заполнение пикселя спрайта.
- :pixel(x, y) -- Взятие пикселя спрайта (возвращает четыре компонента цвета).
- :colorkey(color) -- Задает в спрайте цвет, который выступает в роли прозрачного фона. При этом, при последующем выполнении операции :copy, из рассматриваемого спрайта будут скопированы только те пиксели, цвет которых не совпадает с цветом прозрачного фона.
В качестве "цвета" методы получают строки вида: 'green', 'red', 'yellow' или '#333333', '#2d80ff'...
Пример:
lua
local spr = sprite.new(320, 200)
spr:fill 'blue'
local spr2 = sprite.new 'fish.png'
spr2:draw(spr, 0, 0)Кроме того, существует возможность работы с шрифтами. Шрифт создаётся с помощью sprite.fnt(), например:
local font = sprite.fnt('sans.ttf', 32)
У созданного объекта определены следующие методы:
- :height() -- высота шрифта в пикселях;
- :text(text, col, [style]) -- создание спрайта из текста, col - здесь и далее - цвет в текстовом формате (в формате '#rrggbb' или 'текстовое название цвета').
- :size(text) -- вычисляет размер, который будет занимать текстовый спрайт, без создания спрайта.
Вам также может пригодиться функция:
sprite.font_scaled_size(size)
Она возвращает размер шрифта с учётом масштабирование, которое выставил игрок в настройках INSTEAD. Если вы в своей игре хотите учитывать такую настройку, используйте эту функцию для определения размера шрифта.
Пример:
lua
local f = sprite.fnt('sans.ttf', 32)
local spr = sprite.new('box:320x200,black')
f:text("HELLO!", 'white'):draw(spr, 0, 0)Теперь, рассмотрим варианты применения модуля sprite.