Anuncios Google

Desplazar imagen.

Bien, tengo una duda en Luadev.
Yo quiero que, al pulsar un botón, por ejemplo el círculo, una imagen aparezca de la izquierda y se vaya deslizando hasta ocupar la pantalla. ¿Cómo hago eso?

Gracias de antemano.


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 Andres_Ne

pss a mi no me gusta

pss a mi no me gusta complicarme ... yo lo haria asi:

imagen= image.load("ruta")
x_imagen = - 480
moverse = false
 
function mover()
	if moverse == true then 
		x_imagen = x_imagen + 10
	end
end
 
while true do
controls.read
imagen:blit(x_imagen,0)
 
if controls.press("cross") then 
	moverse == true
end
 
if x_imagen + 480 >= 480 then 
	moverse == false
end
 
screen.flip()
 
end

Lastima que deje la programacion :(


 

 

Imagen de NEKERAFA

Mmm...

¿Y cuando la imagen no ocupe 480? Tendrías que editar ese script por cada imagen que no tenga el mismo ancho

Imagen de Jepte

de echo no necesita la

de echo no necesita la funcion para eso.xd

Imagen de Chimecho

Ehm...

Y la función mover, ¿cuándo se ejecuta?

Imagen de Andres_Ne

jejej se me ah pasado eso xD

jejej se me ah pasado eso xD pss me imagino que el ya a de saber como mover la imagen se me a volado ese detalle ;)

Imagen de NEKERAFA

Mmm...

A ver, pensemos por un momento, que nos hace falta:

Lo que quieres es que al darle a un botón aparezca una imagen desde la izquierda y se mueva a la derecha. Muy bien, ya lo tienes hecho, ahora solo lo tienes que pasar al código.

Primero, define una variable que cambiará al pulsar el botón que quieres, así mostraremos nuestra imagen. Te recomiendo un booleano:

mover = false -- Cambiará al pulsar el botón

Ahora definimos una variable, que será la que cambie la posición de la imagen cuando la variable mover sea cierta.

x = 0

Y cargamos nuestra imagen:

imagen = image.load("mi imagen.png")

Ahora vamos a poner un bucle infinito para que nunca termine el programa, a menos que salgas de él al presionar el botón "Home"

while true do

Comprobamos primero los botones que se han pulsado al iniciar el bucle:

        controls.read()

Ahora ponemos una condición, que será la que cambie nuestra primera variable, mover, al pulsar el botón correspondiente. Yo he puesto el botón círculo, pero pon el que quieras:

        if controls.press("circle") and mover == false then mover = true end

Te comento, lo que le dije es que si presionamos el botón círculo y la variable mover es falsa, definimos mover como verdadero. Si quieres reducir el código, al ser un valor booleano, puedes finirlo así (Te lo recomiendo):

        if controls.press("circle") and not mover then mover = true end

Es lo mismo que arriba.

Ahora pon una nueva condición donde cambie la segunda variable, que si recuerdas, es la que va a cambiar la posición de la imagen:

        if mover and x < imagen:width() then x = x+2 end

Le he dicho a Lua que si mover es verdadero (Sería lo mismo que poner mover == true) y la variable x es menor a la anchura de la imagen (Ya que vamos a mover la imagen de izquierda a derecha), aumente x dos píxeles.

Ahora mostramos la imagen:

        imagen:blit(-imagen:width()+x, 0)

Como has visto arriba, image.width() devuelve la anchura de la imagen. Con el prefijo unario - le digo que cambie el signo, por lo que nos devuelve menos la anchura de la imagen. A esta le sumamos la variable x, que irá aumentando en cada ciclo del bucle, hasta que llegue a la anchura de la imagen y contrarestre la menos anchura de la imagen, devolviendo 0 y mostrandose la imagen completa en pantalla.

Ahora volteamos el buffer a la pantalla y cerramos el bucle:

        screen.flip()

end

Se podría poner x como la anchura de la imagen, y comprobar que x sea menor que 0 para sumarle a x +2, así como mostrar la imagen con solo x, pero he preferído mostrarlo de otra forma diferente para que veas que hay más de una forma posible.

 

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

Puedes

En vez de if controls.press("circle") and not mover then mover = true end  puedes usar  if controls.press("circle") then mover = not mover end

 

Saludos!

Imagen de NEKERAFA

No

Si lo pones así ya cambia el efecto. Yo lo puse para que solo se muestre una vez al pulsar el botón circulo por primera vez (Cambiar a true un booleano cuando ya es true es una tontería)

Según tu efecto, cada vez que pulses, o continua el efecto o para.

Despues, un tercer efecto sería poner que al volver a pulsar se reinicie las variables y vuelva a reiniciar el efecto:

if controls.press("circle") then mover = not mover end
if not mover and x != 0 then x = 0 end


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

Imagen de PerezRE

Una duda

Una duda, ¿Para que se utiliza el signo de admiracion?

 

Saludos.

Es el operador diferente de

Es el operador diferente de en C, dice Rafa que funciona también en LuaDEV, la verdad yo no lo he probado, uso el de Lua (~=).

Imagen de PerezRE

Ya entiendo. Gracias.

Ya entiendo. Gracias.

Imagen de NEKERAFA

Mmm...

Si, LuaDEV es el único intérprete en el que funciona. Chimecho (No se si puse bien su nombre) lo utiliza en sus tutoriales, creo recordar.


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.