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)
}

results matching ""

    No results matching ""