Hola.
Mi tercer post y es para preguntar algo, jajaja, que mal ;-)
quiero tener una imagen de fondo, y poner como un cuadrado de tela trasparente para luego escribir encima de la tela.
he conseguido algo, pero es pixel por pixel y me resulta muy lento,
¿hay alguna funcion para hacer blit con una imagen sobre otra usando algun parametro de trasparencia como el alpha?
gracias
un saludo
Spirax
os pondo el codigo que he
os pondo el codigo que he empleado ahora pero tiene que haber algo mas facil ¿no?
jajaja vereis que mi metodo de programación es patetico, pero bueno ahy estoy poco a poco y autodidacta, jajaja
para probarlo con lua necesitais una imagen en png llamada field.png (vale cualquiera) pero preferiblemente de 480x272
a ver si alguno se le ocurre algo mejor, jaja
jo, no sale bien el codigo, a ver si miro como adjuntarlo ;-)
se come algunas lineas y simbolos. y eso que lo he metido entre code y /code.
ja, ya se era por el simbolillo de "menor que" por que es como empiezan los tags de codigo, hay que cambiarlo por el simbolo :-)
Gracias
Spirax
Estoy en ello
Primero de todo: Enhorabuena por acercarte al lua.
Segundo, lo que tu pretendes hacer (el modificar la tonalidad de ciertos pixeles) es algo con lo que yo estuve esperimentando, exactamente trate de hacer un puntero que modificara los colores del fondo por la zona que sobrevolaba, pero desistà ya que si el area a dibujar era extensa se ralentizaba notablemente, por lo que veo, tu codigo esta bastante claro y correcto, Lo basico es que al anidar bucles, el rendimiento baja notablemente, es una pena que esta sea la unica forma de recorrer los pixeles en filas y columnas. Voy a ver si de algun modo esto se puede mejorar. Yo lo he probado en el Luaplayer para windows y no en la psp, pero al mover bax=bax-1 en vez de bax=bax-2 el movimiento es mas fluido.
--flotaré, como patitos de goma en el agua estancada de la vida--
¡Un verdadero guerrero Klingon nunca utiliza comentarios en su código!
modificacion
Lo unico que e modificado es los while por for, ahorrandonos escribir los incrementos y tal, creo que va mas o menos igual de velocidad, tu juzgaras:
white = Color.new(255, 255, 255)
black = Color.new(10,10,10,0)
background = Image.load("field.png")
bax=0
while true do
screen:blit (bax,0,background)
screen:blit (bax+480,0,background)
bax=bax-2
if bax < -480 then
bax=0
end
xx=180
for y=0,50 do
x=100
for x=0,100 do
color = screen:pixel(x+xx, y+100)
colors = color:colors()
screen:pixel(x+xx, y+100, Color.new(colors.r-10,colors.g -10,colors.b-10))
end
end
screen:print (xx+30,110,"Titulo" ,black)
screen:print (xx+20,130, "del menu",black)
screen.flip()
pad = Controls.read()
if pad:start() then
break
end
end
--flotaré, como patitos de goma en el agua estancada de la vida--
¡Un verdadero guerrero Klingon nunca utiliza comentarios en su código!
thanks. Si, yo tambien estoy
thanks.
Si, yo tambien estoy expreimentado con esto, jaja, es que veo es algunas funciones que hablan de la propiedad alpha, pero claro eso seria con imagenes de 32 bits en la que el cuarto bit es el canal alpha o trasparencia del bit de 0 a 255.
claro eso es teorico porque el hacer
screen:pixel(10,10,Color.new(0,0,255,125)
que deberia de ser medio transparente
hace lo mismo que:
screen:pixel(10,10,Color.new(0,0,255,0) --trasparente
screen:pixel(10,10,Color.new(0,0,255,255) --opaco
gracias de todos modos por las molestias en mirar y probar el codigo, jajaja
la idea creo que es buena, pero es que se ralentiza un huevo
Para un menú si sirve, pero para imagenes en movimiento se queda petao, jajaja
gracias
Spirax
el canal alpha
Por lo que e visto, el alpha solo toma los valores absolutos, realmente solo sirve para visualizar o no los bits transparentes de un .gif o un .png pero no para crear sombras o superficies translucidas. Si quieres hablar sobre lua, agregame al messenger: mordicuac(arroba)gmail.com
--flotaré, como patitos de goma en el agua estancada de la vida--
¡Un verdadero guerrero Klingon nunca utiliza comentarios en su código!