Skip to content

Спрайты

Для создания спрайта используйте метод 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.