spr
печать спрайта
spr (id, x, y, [alpha_color=-1, [scale=1, [flip=0, [rotate=0, [cell_width=1, cell_height=1]]]]])
Параметры:id - индекс спрайта (0-511)
x - координата по оси x, по которой будет отрисован спрайт, начало координат левый-верхний угол экранаy - координата по оси y, по которой будет отрисован спрайт, начало координат левый-верхний угол экранаalpha_color - индекс цвета, который будет прозрачным. Используйте -1 для отсутствия прозрачных пикселей, также может быть массивом с индексами прозрачных цветовscale - масштаб, который будет применен к спрайтуflip - отражение спрайта по вертикальной/горизонтальной оси, либо по обеим осям сразуrotate - поворот спрайта на 0, 90, 180 или 270 градусовcell_width - ширина, измеряется в ячейкахcell_height - высота, измеряется в ячейках
Описание:
Выводит на экран спрайт по указанному индексу в определенные координаты.
Вы можете выбрать цвет из палитры, который будет прозрачным. Используйте -1 для отсутствия прозрачных пикселей
Спрайт может быть отмасштабирован по указанному коэффициенту. Например, при масштабе равном 2, спрайт 8x8 будет выведен на экран размером 16x16 пикселей.
Вы можете отразить спрайт передавая параметр flip:0 - нет отражения1 - отражение относительно вертикальной оси2 - отражение относительно горизонтальной оси3 - отражение по обеим осям сразу
Когда вы поворачиваете спрайт, передавая параметр rotate, он поворачивается с шагом в 90° по часовой стрелке:0 - нет поворота1 - поворот на 90°2 - поворот на 180°3 - поворот на 270°
Пример:
Запустить или скачать картридж примера.
-- title: spr demo
-- author:
-- desc:
-- script: lua
-- input: gamepad
--Build sprite from text
data="010000000160010015240160170170170170170175170166250255170170170175106170170170170170051051051051"
for i=0,31 do
poke(0x4000+32+i,
tonumber(string.sub(data,i*3+1,i*3+3)))
end
p={
x={val=100,min=0,max=240},
y={val=68,min=0,max=136},
colorkey={val=0,min=-1,max=15},
scale={val=1,min=0,max=256},
flip={val=0,min=0,max=3},
rotate={val=0,min=0,max=3},
}
sel=next(p,nil)
function TIC()
--Keys
if btnp(0,30,6) then
for n=0,4 do
sel=next(p,sel) or next(p,nil)
end
end
if btnp(1,30,6) then
sel=next(p,sel) or next(p,nil)
end
if btnp(2,30,6) then
p[sel].val=p[sel].val-1
end
if btnp(3,30,6) then
p[sel].val=p[sel].val+1
end
--Clamp
if p[sel].val>p[sel].max then
p[sel].val=p[sel].max
end
if p[sel].val<p[sel].min then
p[sel].val=p[sel].min
end
cls(0)
print("Use up/down to select parameter",0,0)
print("left/right to change its value:",0,10)
--Build menu with cursor
r=0
for k,v in pairs(p) do
cur=(k==sel) and '>' or ' '
print(cur..k..':'..v.val,0,30+10*r)
r=r+1
end
--Draw Sprite
spr(1,
p.x.val,
p.y.val,
p.colorkey.val,
p.scale.val,
p.flip.val,
p.rotate.val)
end
Запустить или скачать картридж примера.
-- title: spr demo
-- author:
-- desc:
-- script: moon
-- input: gamepad
--Build sprite from text
data="010000000160010015240160170170170170170175170166250255170170170175106170170170170170051051051051"
for i=0,31
poke 0x4000+32+i, data\sub(i*3+1,i*3+3)
p={
x:{val:100,min:0,max:240}
y:{val:68,min:0,max:136}
colorkey:{val:0,min:-1,max:15}
scale:{val:1,min:0,max:256}
flip:{val:0,min:0,max:3}
rotate:{val:0,min:0,max:3}
}
sel=next(p,nil)
export TIC=->
--Keys
if btnp 0,30,6
for n=0,4 do sel=next(p,sel) or next(p,nil)
if btnp 1,30,6 then sel=next(p,sel) or next(p,nil)
if btnp 2,30,6 then p[sel].val=p[sel].val-1
if btnp 3,30,6 then p[sel].val=p[sel].val+1
--Clamp
if p[sel].val>p[sel].max then p[sel].val=p[sel].max
if p[sel].val<p[sel].min then p[sel].val=p[sel].min
cls 0
print "Use up/down to select parameter",0,0
print "left/right to change its value:",0,10
--Build menu with cursor
r=0
for k,v in pairs(p)
cur=(k==sel) and '>' or ' '
print cur..k..':'..v.val,0,30+10*r
r+=1
--Draw Sprite
spr(1,
p.x.val,
p.y.val,
p.colorkey.val,
p.scale.val,
p.flip.val,
p.rotate.val)
// title: spr demo / lua
// author: Filippo
// desc: shows how to use 'spr'
// script: js
// input: gamepad
//Build sprite from text
data = "010000000160010015240160170170170170170175170166250255170170170175106170170170170170051051051051"
for (var i = 0; i < 32; ++i) {
poke(0xf4000 + 32 + i,
parseInt(data.slice(i * 3 + 1, i * 3 + 3)))
}
var p = {
x: { val: 100, min: 0, max: 240 },
y: { val: 68, min: 0, max: 136 },
colorkey: { val: 0, min: -1, max: 15 },
scale: { val: 1, min: 0, max: 256 },
flip: { val: 0, min: 0, max: 3 },
rotate: { val: 0, min: 0, max: 3 }
}
function next(o, i) {
var ks = Object.keys(o)
if (i == undefined || i == null)
return ks[0];
var i = ks.indexOf(i) + 1
return i > ks.length ? "" : ks[i]
}
var sel = next(p, null)
function TIC() {
//Keys
if (btnp(0, 30, 6)) {
for (var n = 0; n < 5; ++n)
sel = next(p, sel) || next(p, null)
}
if (btnp(1, 30, 6)) {
sel = next(p, sel) || next(p, null)
}
if (btnp(2, 30, 6)) {
p[sel].val = p[sel].val - 1
}
if (btnp(3, 30, 6)) {
p[sel].val = p[sel].val + 1
}
//Clamp
if (p[sel].val > p[sel].max) {
p[sel].val = p[sel].max
}
if (p[sel].val < p[sel].min) {
p[sel].val = p[sel].min
}
cls(0)
print("Use up/down to select parameter", 0, 0)
print("left/right to change its value:", 0, 10)
//Build menu with cursor
var r = 0
for (var k in p) {
var v = p[k]
cur = (k == sel) ? ">" : " "
print(cur + k + ":" + v.val, 0, 30 + 10 * r)
r = r + 1
}
//Draw Sprite
spr(1,
p.x.val,
p.y.val,
p.colorkey.val,
p.scale.val,
p.flip.val,
p.rotate.val)
}