Anuncios Google

[Duda LuaDEV] Repetir imagenes

Hola tengo una duda con LuaDEV, yo quiero imprimir una imagen en varias coordenadas de la pantalla algo asi:

 

for variable = 0, 50000, 0.001 do
 
imagen:blit(x,y)
 
x = x + 120
end

 

Eso es un ejemplo para que lo entendais mas o menos a lo que me refiero, yo quiero que al poner este código y vaya a poner la imagen por segunda vez la que se ha puesto primero siga hay y no se borre como me pasa a mí, ¿hay alguna forma de hacer esto?


Sígueme en Twitter: @Aitor_db


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jepte

que te parese esta funcion

que te parese esta funcion solo cambia las cordenadas y claro las imagenes es como una funcion para hacer animasiones

---------------------------

 

tempo=1
mt=30  ------ si cambias esto cambias el tiempo

 

while true do
screen.clear()

controls.read()

 

tempo=tempo+1

if tempo>=mt*27 then tempo=mt*24 end

if tempo>=mt*24 then image.blit(simule,0,0)  end
if controls.cross() or controls.circle() or controls.triangle() or controls.square() then tempo=mt*24 end
if tempo>=0 and tempo<=mt*1 then
image.blit(imaginamarca3,0,0)
elseif tempo>mt*1 and tempo<=mt*2 then
image.blit(imaginamarca2,0,0)
elseif tempo>mt*2 and tempo<=mt*3 then
image.blit(imaginamarca1,0,0)
elseif tempo>mt*3 and tempo<=mt*4 then
image.blit(imaginamarca,0,0)
elseif tempo>mt*4 and tempo<=mt*5 then
image.blit(imaginamarca1,0,0)
elseif tempo>mt*5 and tempo<=mt*6 then
image.blit(imaginamarca2,0,0)
elseif tempo>mt*6 and tempo<=mt*7 then
image.blit(imaginamarca3,0,0)
elseif tempo>mt*7 and tempo<=mt*8 then
screen.clear(negro)
elseif tempo>mt*8 and tempo<=mt*9 then
image.blit(suenamarca3,0,0)
elseif tempo>mt*9 and tempo<=mt*10 then
image.blit(suenamarca2,0,0)
elseif tempo>mt*10 and tempo<=mt*11 then
image.blit(suenamarca1,0,0)
elseif tempo>mt*11 and tempo<=mt*12 then
image.blit(suenamarca,0,0)
elseif tempo>mt*12 and tempo<=mt*13 then
image.blit(suenamarca1,0,0)
elseif tempo>mt*13 and tempo<=mt*14 then
image.blit(suenamarca2,0,0)
elseif tempo>mt*14 and tempo<=mt*15 then
image.blit(suenamarca3,0,0)
elseif tempo>mt*15 and tempo<=mt*16 then
screen.clear(negro)
elseif tempo>mt*16 and tempo<=mt*17 then
image.blit(jas3,0,0)
elseif tempo>mt*17 and tempo<=mt*18 then
image.blit(jas2,0,0)
elseif tempo>mt*18 and tempo<=mt*19 then
image.blit(jas1,0,0)
elseif tempo>mt*19 and tempo<=mt*20 then
image.blit(jas,0,0)
elseif tempo>mt*20 and tempo<=mt*21 then
image.blit(jas1,0,0)
elseif tempo>mt*21 and tempo<=mt*22 then
image.blit(jas2,0,0)
elseif tempo>mt*22 and tempo<=mt*23 then
image.blit(jas3,0,0)
elseif tempo>=mt*23 and tempo<=mt*24 then
screen.clear(negro)
elseif tempo>=mt*24 and tempo<=mt*25 then
image.blit(simulestart1,0,0)
elseif tempo>mt*25 and tempo<=mt*26 then
image.blit(simulestart2,0,0)
elseif tempo>mt*26 and tempo<=mt*27 then
image.blit(simule,0,0)
end

screen.waitvblankstart()
screen.flip()
if controls.start() and tempo>=mt*21 then  break  end
end

Imagen de AitorDB

Haber, yo lo que quiero es

Haber, yo lo que quiero es que cuando el bucle haga su segunda repeticion se blitee la imagen en otras coordenadas y que no se borre la primera:

while true do
 
imagen:blit(x,y)
 
x = x + 120
 
screen.flip()
 
end

 

Esto hace que la imagen "se mueva" pero yo quiero que con no se mueva, sino que vuelva a blitear la imagen sin que "desaparezca" la primera.


Sígueme en Twitter: @Aitor_db

Imagen de Chimecho

Mmmm...

Comprendo lo que quieres hacer, pero no comprendo si lo que quieres es ver o no el efecto.

1) No ver el efecto (sólo verás las imágenes ya bliteadas y ya)

imagen = image.load("bla.png");
n = 10; -- n será el número de veces que se repita tu imagen
x = 0; -- punto inicial en x
y = 0; -- punto inicial en y (aunque es el mismo siempre y podrías ponerlo directo en el blit)
 
while true do
    for i=1, n do
        imagen.blit(x+(i-1)*120, y);
        --[[ (i-1)*120 lo que hará es aumentar el valor de x en 120 por cada pasada
             i=1 -> (1-1)*120 = 0*120 = 0
             i=2 -> (2-1)*120 = 1*120 = 120
             i=3 -> (3-1)*120 = 2*120 = 240
             ... etcétera
        ]]
    end
    -- En este punto, están TODAS las imágenes en el buffer secundario
    screen.flip(); -- cambiamos de buffer, y las imágenes aparecerán en pantalla
end

2) Ver el efecto (Ves cómo va apareciendo una imagen tras otra)

imagen = image.load("bla.png");
v = 1; -- v es una variable de control que irá aumentando hasta llegar al máximo, es decir, la primera vez v será 1 (1 imagen), la 2º será 2 (2 imágenes), y así
n = 10; -- n será el número de veces que se repita tu imagen
x = 0; -- punto inicial en x
y = 0; -- punto inicial en y (aunque es el mismo siempre y podrías ponerlo directo en el blit)
 
-- Nota: Aquí ya no creo que sea necesario el bucle, pero como no sé exactamente qué es lo que estás haciendo...
while true do
    for i=1, v do
        imagen.blit(x+(i-1)*120, y);
        -- Misma explicación que el anterior
    end
    -- En este punto, están las imágenes de 1 a v en el buffer secundario
    screen.flip(); -- cambiamos de buffer, y las imágenes aparecerán en pantalla
    v=v+1; -- Como necesitamos que la próxima vez se muestre una imagen más que la vez anterior, aumentamos la cantidad a mostrar en 1
 
    -- Lo siguiente es opcional, aunque no veo sentido a no poner un límite, ya que en algún momento se saldrá de la pantalla y estarás haciendo ciclos de por gusto
    if v>n then -- si el número de imágenes a mostrar, es mayor a la cantidad del número de veces que se debe repetir la imagen, entonces
        v=1; -- v será 1 nuevamente (se mostrará 1 imagen, luego 2, y así en adelante)
    end
    -- Y aquí puedes hacer una espera con screen.waitvblankstart(numero) o para un mayor control, poner un timer, eso ya te queda de tarea
end

 

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de Jepte

no secitas usar for 

no secitas usar for 

---------------------

while true do

 x=x+120

if x>5000 then x=0 end

imagen:blit(x,y)

-----------

 y para que aparescan repetidas tienes que hacer otro blit

que es lo que quieres hacer?.saludos

 

Imagen de Mills

Así

Para imprimir unas cuantas imágenes a la vez, yo lo hago así

 

while true do
 
imagen:blit(x,y)
imagen:blit(x+120,y)
imagen:blit(x+240,y)
 
end

Si vas a usar muchas repeticiones de la misma imagen, como para hacer un juego tipo mario, por aquí hay un tutorial que usa las tablas y los for, pero las imágenes tienen que ser pequeñas, y no ser muchas, porque con los for se ralentiza mucho.

 

Saludos


Pobre PSP

Se borra porqué una vez

Se borra porqué una vez flipeados los buffers, se limpia el back buffer, por lo tanto cada vez que llamas al screen.flip() se limpia la pantalla.

Simplemente debes blitear la imágen las veces que quieras antes de llamar al flip.

Imagen de NEKERAFA

Mmm...

¿De verdad os habeis leído los tutoriales de Lua? ¬¬

Mira esto: http://psp.scenebeta.com/tutorial/6-imagenes. Ya se que está en LuaHM, pero el concepto es lo que cuenta.

Un saludo ^-^


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.