Anuncios Google

Explorador de archivos

Tutoriales Avanzados Homebrewes

Bueno amigos de Scenebeta me he decido ha  escribir este tutorial, debido a que veo muchos post sobre preguntas de cómo hacer un explorador, todo esto bajo LuaDEV, espero resolver sus dudas con esto, ya que un explorador es muy importante a la hora de elaborar un homebrew… bueno eso también depende del uso del homebrew. Venga, manos a la obra!

Para darnos una idea de lo que lograremos al final del tutorial una captura:

Primero declaramos las variables que utilizaremos.

posicion 	= 1
limiteInf 	= 1
Chocolate 	= color.new(210,105,30)
negro 		= color.new(0,0,0)
blanco 		= color.new(255,255,255)
rojo 		= color.new(255,0,0)
workDir 	= files.list("ms0:/")

 “posicion” será nuestra variable que nos indicara en que lugar nos encontramos. Ejemplo, si nos encontramos adentro de una carpeta con 10 archivos con “posicion” sabremos en que archivo estamos posicionados indicado por un numero entero:

posicion 	= 1

 “limiteInf” esta variable nos ayudara hacer el famoso scroll, para que quede un poco mas claro la variable se llama “Limite Inferior” obvio verdad xD esto marcara el inicio de donde se comenzara a imprimir los elementos de nuestra tabla esta variable no es “x”, ya veras su uso mas adelante ;)

limiteInf 	= 1

Declaramos nuestros colores, en la web tenemos un post con 141 colores para tus homebrews recuerda que esto es a tu gusto:

Chocolate 	= color.new(210,105,30)
negro 		= color.new(0,0,0)
blanco 		= color.new(255,255,255)
rojo 		= color.new(255,0,0)

Y por ultimo nuestro directorio de trabajo “workDir” si observas hemos utilizado una función de LuaDEV files.list() siempre revisa la documentación =_= files.list() es una función que nos lista los elementos de una carpeta, en otras palabras guarda en una tabla o array la dirección de los archivos que se encuentran en ella. En este caso files.list("ms0:/") guardara en una tabla todos los archivos que hay en la raíz de la memoria:

workDir 	= files.list("ms0:/")

Ahora haremos la función que recorrerá nuestra tabla donde están guardadas las direcciones de los archivos.

function opciones()
	x 		= 10
	y 		= 13
	lugar 	= workDir[posicion].name
	for i= limiteInf, #workDir do
		if posicion == i  then
			screen.print(x,y,files.nopath(workDir[i].name),0.6,negro,blanco)
		else 
			screen.print(x,y,files.nopath(workDir[i].name),0.6,blanco,0x0)
		end
		y 	= y + 13
	end
end

Declaramos nuestras variables de ubicación “x” & “y” con ellas se ubicara el texto donde tu lo asignes, te recomiendo estos valores; específicamente el de “y” debidos a las condiciones del scroll, pero tu fácilmente lo puedes modificar:

x = 10
y = 13

lugar” se me acabo la imaginación xD así que lo llame “lugar” esta variable almacena el lugar o archivo donde nos encontramos, no la posición, si no el nombre de la carpeta o archivo donde estamos posicionados:

lugar = workDir[posicion].name

Haremos el bucle que recorrerá nuestra tabla he imprimirá los nombres de los archivos:

for i= limiteInf, #workDir do

Esta es la estructura básica de un for: “for inicio, final do” esto sin contar el “end” que cierra el bucle. Esto quiere decir que nuestro for iniciara en 1(limiteInf = 1) y llegara hasta el tamaño de nuestra tabla; en Lua si antepones un # a una tabla, obtienes el valor de índices que hay en ella. 

Ahora haremos la condición que imprimirá nuestras opciones:

if posicion == i  then
	screen.print(x,y,files.nopath(workDir[i].name),0.6,negro,blanco)
else 
	screen.print(x,y,files.nopath(workDir[i].name),0.6,blanco,0x0)
end
y 	= y + 13

He decidido no explicar esta sección para que lean la documentación, aunque yo en un tutorial anterior explique como funciona esto, pero no seria malo que repasaras la docu ;)

Vamos con la función para navegar por las opciones:

function navegador()   
	if controls.press("down") and posicion ~= #workDir then
		posicion = posicion + 1
		if posicion > 19 then limiteInf = limiteInf + 1 end
	end
	if controls.press("up") and posicion > 1 then  
		posicion = posicion - 1
		if posicion > 18 then limiteInf = limiteInf - 1 end
	end
end

Ocuparemos una condición la cual, si presionas abajo o arriba ejecutara una acción. Si has leído tutoriales de programación o traes algunas bases de otros lenguajes, sabrás sobre el operador booleano “and” que en Lua se escribe de la misma manera. El operador “and” es una conectiva que puede definirse como verdadera, sólo cuando ambas proposiciones sean verdaderas. Para que entiendas mejor veamos nuestra condición:

if controls.press("down") and posicion ~= #workDir then

si presionas abajo y(and) la variable posición es diferente que #workdir entonces…

Solo si se cumplen las dos condiciones se hará lo que deseamos. 

Ahora que ya entendemos por que ocupamos el operador “and” explicare por que “la variable posición tiene que ser diferente que #workdir” por que si “posicion” aumentara mas que el numero de índices de la tabla, nos daría error; por que buscaría variables en una tabla con índices que no existen.

Si eso se cumple ejecutamos lo siguiente.

Ya que cambiamos de archivo necesitamos cambiar también la posición en la que nos encontramos.

posicion = posicion + 1

Ahora aquí viene nuestro famoso scroll :D

if posicion > 19 then limiteInf = limiteInf + 1 end

He declarado 19 por el tamaño de letra que he asignado y el espacio entre cada impresión, si hay más de 19 archivos no podremos verlos todos. Recuerda nuestro for de impresión (for i= limiteInf, #workDir do) nuestra variable “limiteInf” empezaba en 1 y con esto se sumara tantas veces sea necesario, es decir que ya no imprimirá mis archivos desde el primero, si no desde lo indique “limiteInf” eso hará nuestro famoso scroll :D fácil verdad.

La segunda condición es lo mismo pero esta se cumplirá si presionas arriba y si “posicion” es mayor que 1, por que, si esta variable llega a cero, nos dará un error. Y el Scroll de este es igual solo que inverso, en ves de sumarle a “limiteInf” se resta1.

Vamos a nuestra función para entrar a las carpetas :D

function adelante()
	if workDir[posicion].directory then
		posicion 	= 1
		limiteInf 	= 1
		workDir 	= files.list(lugar)
	end
end

En esta función, realizamos una condición que verificara, si donde nos encontramos (posición) es una carpeta o un archivo, esto lo sabemos colocando “.directory” a la tabla que almacena nuestros archivos listados.

Luego colocamos las variables “posicion” y “limiteInf” en 1 para que no haya errores de índices no encontrados en la tabla que listamos con:

workDir 	= files.list(lugar)

Si se recuerdan “lugar” mantenía el nombre de donde estamos ubicados, esto al pasárselo al file.list() listara lo que hay en la carpeta.

Vamos con la función atrás:

function atras()
   posicion 	= 1
   limiteInf 	= 1
   workDir 		= files.list(files.nofile(files.nofile(lugar)))
end

con esto nosotros podes regresar, de alguna carpeta en la que nos hayamos metido y siempre colocamos las variables “posicion” y “limiteInf” en 1 para que no haya errores de índices que no existen en la tabla que listamos con

workDir 	= files.list(files.nofile(files.nofile(lugar)))

la función files.nofile() sirve para quitar el archivo a una ruta, pero no solo eso, puede seguir quitando hasta directorios… como así? Veamos con un ejemplo:

Nos encontramos en la carpeta “demo” posicionados en el archivo “script.lua”

“ms0:/PSP/GAME/demo/script.lua”

Si nosotros aplicamos la función files.nofile() ha esa cadena nos quedaría:

“ms0:/PSP/GAME/demo/

 Pero eso no es suficiente, por que si listamos eso, nos quedaremos en el mismo lugar, ya que estamos en esa misma carpeta. Entonces volvemos aplicar la misma función files.nofile() y nos quedaría así

“ms0:/PSP/GAME/

Al listar eso, estaremos un directorio arriba de donde nos encontramos.

Bueno espero poder ayudarles con este tutorial, respondiendo algunas o todas sus dudas sobre este tema, le he puesto algunos efectos (solo son colores x'D) para que no se vea tan cutre, esto es el gusto del programador :3 se que el código se podría simplificar mas, pero como dije es gusto del programador :3

Cualquier duda o comentario es bienvenido : D

Les pongo el código completo para que lo examinen, lo demás no lo explico por que seria de sobra:

posicion 	= 1
limiteInf 	= 1
Chocolate 	= color.new(210,105,30)
negro 		= color.new(0,0,0)
blanco 		= color.new(255,255,255)
rojo 		= color.new(255,0,0)
workDir 	= files.list("ms0:/")
function opciones()
	x 		= 10
	y 		= 13
	lugar 	= workDir[posicion].name
	for i= limiteInf, #workDir do
		if posicion == i  then
			screen.print(x,y,files.nopath(workDir[i].name),0.6,negro,blanco)
		else 
			screen.print(x,y,files.nopath(workDir[i].name),0.6,blanco,0x0)
		end
		y 	= y + 13
	end
end
function navegador()   
	if controls.press("down") and posicion ~= #workDir then
		posicion = posicion + 1
		if posicion > 19 then limiteInf = limiteInf + 1 end
	end
	if controls.press("up") and posicion > 1 then  
		posicion = posicion - 1
		if posicion > 18 then limiteInf = limiteInf - 1 end
	end
end
function adelante()
	if workDir[posicion].directory then
		posicion 	= 1
		limiteInf 	= 1
		workDir 	= files.list(lugar)
	end
end
function atras()
   posicion 	= 1
   limiteInf 	= 1
   workDir 		= files.list(files.nofile(files.nofile(lugar)))
end
while true do
	controls.read()
	navegador()
	draw.gradrect(0,0,480,272,Chocolate,Chocolate,negro,negro)
	opciones()
	screen.flip()
	if controls.press("cross") then
		adelante()
	end
	if controls.press("circle") then
		atras()
	end
end

4.266665
Tu voto: Ninguno Votos totales: 4.3 (60 votos)

Anuncios Google

Comentarios

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 megatocinoslv

xd

porque hay espacios de una palabra al signo

esque cuando veo los codigos de fuente se alcanza a notar que hay un espacio pequeño algo asi

color = (111,222,333)

y cuando estoy haciendo uno desde 0 normalmente es algo asi

color=(blablabla) y no se si estoy mal o solito se separa

estoy mal o bien ?

 

SALUDOS


firma

(+|___|%) psp 3001 PRO B10 6.60 __TA-092
 QUIERES UN RCO? O UN OSK CONPATIBLE PARA 6.60 PRO/ME AQUI LO ENCUENTRAS: FACEBOOK

Imagen de -DjB

No importa como lo ponga si

No importa como lo ponga si es color= color.new(234,333,232) o
color =color.new(234,333,232) o color=color.new(234,333,232) o
color = color.new(234,333,232) es lo mismo estas declarando lo mismo ;)


Imagen de megatocinoslv

okis

okissventonces empesare  a programar

 

saludosTodo bien

Imagen de Falconal

Y como se hace para renombrar

Estuve viendo la documentacion y en files.rename pide dos argumentos (el nombre del archivo y el nuevo nombre), El Nombre es la ruta?, porque intenté files.rename(workDir[posicion].name,os.osk), uso workDir[posicion].name para obtener el archivo seleccionado y os.osk para el teclado que automaticamente devuelve el texto escrito pero no pasa nada, alguna idea?


 

 

                           Falconal was here

Podrías pegar esa parte del

Podrías pegar esa parte del código? Porque algo mal estarás haciendo.

Y si, el 1er argumento de files.rename es la ruta del archivo, y el 2o es el nuevo nombre (sólo nombre, no es ruta)

Imagen de Falconal

Es este

files.rename("ms0:/test.txt",os.osk) Ese sería el codigo, por ejemplo para renombrar el archivo test.txt en la raiz de la memoria(esa sería la ruta), y os.osk para el teclado y así poder intruducir el nombre deseado


 

 

                           Falconal was here

Si lo pusiste tal cual... es

Si lo pusiste tal cual... es obvio que te dará error. Te faltan argumentos para os.osk :P

Imagen de pepingo el hacker

Y

Y Como seria Para Cuando Estes En El Explorador Cargar Un Archivo Tipo Iso, MP3, mp4....?

Salu2

Revisa este ejemplo que dejé

Revisa este ejemplo que dejé hace tiempo. No es exactamente lo que pides, pero con un par de modificaciones te servirá. De hecho, sólo le faltaría la comprobación del tipo de archivo (que se puede hacer muy fácil con files.ext)

Imagen de barney77

files.ext() te servirá(revisa

files.ext() te servirá(revisa la docu),

Imagen de pepingo el hacker

Un

Un Ejemplo Please =D

Salu2 Bro

Imagen de Dioni0396

if

if controls.cross() and files.ext(workdir[posicion].name) == "iso" then

os.runiso(workdir[posicion].name)

end

Imagen de fran98

¿En cual fnción se pone, en

¿En cual fnción se pone, en navegador o en opciones?

Saludos.

Imagen de Dioni0396

donde quieras.

donde quieras.

Imagen de fran98

Me reproduce la canción que

Me reproduce la canción que selecciono pero, ¿cómo se hace para pararla?

Saludos.

Imagen de Dioni0396

if

if controls.circle() and sonido:playing() == true then

sonido:stop()

end

Imagen de fran98

Con el círculo me sale error,

Con el círculo me sale error, lo intentaré con el triángulo.

PD: Que va, este es el error:

Se intentó index sonido (alcance global, con valor


Imagen de Dioni0396

Normal ¬¬

xD Es normal, donde yo pongo sonido, tu debes haber puesto el nombre de tu sonido, no el que te daba yo.

Imagen de fran98

Te refieres a esto?: if

Te refieres a esto?:

if controls.triangle() and (nombre de la cancion):playing() == true then
    sonido:stop()
end


Imagen de Dioni0396

Casi:

if controls.triangle() and (nombre de la cancion):playing() == true then
    (nombre de la cancion):stop()
end

Imagen de fran98

Perdón por hacerte muchas

Perdón por hacerte muchas preguntas pero, ¿hay alguna forma en que el nombre de la canción se escriba sola en la función, sin que lo tenga que escribir?


Imagen de Dioni0396

Em, si.

te dejo un codigo:

if controls.square() and files.ext(workDir[posicion].name) == "mp3" then
Sonido = sound.load(workDir[posicion].name)
Sonido:play()
end

Aqui, sonido no tienes que sobreescribirlo.

Imagen de fran98

Me parece que te has

Me parece que te has confundido.

Supongamos que yo soy un nuevo usuario de esta web, y me llamo con otro nombre (supongamos), y veo este explorador (el que estoy haciendo) y me lo descargo.

Y despues de descargarlo y de extraerlo, lo ejecuto, y se me ocurre poner una canción.

Tú me has dicho que para pararla hace falta poner el nombre, pero como no se la cancion que va a poner e l usuario, solo la prodria ejecutar.

¿Me vas siguiendo?


Imagen de Dioni0396

Es que

para eso sirve lo que pone arriba el explorador de directorio.

Haber, cuando listas una carpeta se crea una tabla de las cuales con el modulo files puede saber el nombre.

Tu coje ese codigo que te he dado y ponlo en tu code y prueba una cancion, cualquiera, veras como funciona.

Imagen de fran98

¿Podemos seguir en MP? Esque

¿Podemos seguir en MP?

Esque sino, no se van a poder visualizarse bien los comentarios.

Imagen de Dioni0396

enviamelo

enviamelo.

Imagen de pepingo el hacker

Gracias

Gracias Dioni.

Por Cierto Suerte en el Scenery =D

Salu2

P.D Para cargar Música Como seria? Por que Lo intento Pero Nada. Esto es lo que pongo yo:

if controls.square() and files.ext(workDir[posicion].name) == "mp3" then
sound.load(workDir[posicion].name)
end
end

Imagen de Dioni0396

lo mismo.

pero tienes un error, cargas el sonido y no lo reproduces:

if controls.square() and files.ext(workDir[posicion].name) == "mp3" then
Sonido = sound.load(workDir[posicion].name)
Sonido:play()
end

Te lo he dejado en el boton cuadrado.

Imagen de User170294

pues yo lo pongo asi tal cual

pues yo lo pongo asi tal cual y no me funciona...

salu2

Imagen de Dioni0396

algo haras mal

algo haras mal

Imagen de User170294

nada, ya esta, era una

nada, ya esta, era una incompatibilidad con la X, lo puse en []...

salu2

Imagen de pepingo el hacker

Ya

Ya decia yo que no cargaba Jajajaj Xd

Gracias Dioni de Nuevo. Te dejo Unos Bitos Xd

Salu2

Imagen de Falconal

Soy un despistado

Se que ya pregunté esto pero como puedo agregar la funcion de copiar archivos a el explorador del tutorial, dioni escribió una forma para esto pero me emocione, agradecí de una vez y resulta que no funcionó( files.copy(workDir[i].name,"ms0:/") ), tuve problemas con la compu y no pude comentar sobre esto sino despues de unos dias y nadie me contestó(esto me enseña a probar primero y agradecer después), así que, alguna idea para esto?


 

 

                           Falconal was here

Imagen de User170294

¿Que tengo que modificar para

¿Que tengo que modificar para que en una carpeta con 50 imagenes los archivos no salgan por abajo de la pantalla? iwal q por la parte de arriba, que por mucho q bajes no salen de la pantalla??

 

Otra cosa, cuando te metes en una carpeta vacia salta un error en esta linea:

lugar=workDir[posicion].name;

salu2


Imagen de Dioni0396

el limiteinf

tiene algo que ver con eso.

Imagen de User170294

pro no sbeis como

pro no sbeis como resolberlo?

y xq cuando ntro en una carpeta vacia salta error??

Imagen de Dioni0396

Am eso.

Eso es facil, te dejo un codigo que mas o menos te hara entenderlo:

if #workdir == 0 then --# eso sirve para ver los elementos totales en la carpeta que se usa con files.list()
--codigo a ejecutar
end

Imagen de User170294

gracias por tu respuesta. me

gracias por tu respuesta. me estas diciendo en serio? emm, ya se que #table devuelbe el numero de indices de table pero eso no me sirve de nada...

ya que antes de que le diga al programa lo que tiene q acer cuando #workDir==0 el programa salta ERROR al no poder mostrar ningun valor existente...

y para que no salga el texto por abajo?? nada??

salu2

 

 


Imagen de Dioni0396

para que no salte el error

tienes que poner que cuando esa sentencia se ejecute, no haga la comprobacion de archivos.

Nada, de eso no se nada-.

Imagen de User170294

Ok ya resolví mi primera

Ok ya resolví mi primera duda. 

 

ahora me queda resolver como hacer para que los archivos no salgan por la pasrte de abajo d la pantalla

salu2


Línea 5 de la función

Línea 5 de la función opciones(): El for termina hasta que imprimió todos los elementos de workdir (sin importar si están en la pantalla o no). Esa parte es la que debes modificar.

Imagen de User170294

OK, gracias por tu rspuesta,

OK, gracias por tu rspuesta, mañana mismo me pongo con esto.

EDITADO: lo he intentado pero no se exaactamente qq modificacion debo hacer

salu2


Editado: Crear comentarios duplicados incumple las Normas de la comunidad, si necesita cambiar su comentario puede usar la opcion de Editar, antes de volver a postear por favor revíse las Normas.| --Gomasz--|


Imagen de fran98

Que en el fondo salga una ola

Que en el fondo salga una ola (se como se hacen).

Saludos.

Sencillamente agregas el code

Sencillamente agregas el code que genera la ola dentro del while.

Imagen de fran98

No me sale. Este es el

No me sale.

Este es el código:

posicion 	= 1
limiteInf 	= 1
Chocolate 	= color.new(210,105,30)
negro 		= color.new(0,0,0)
blanco 		= color.new(255,255,255)
rojo 		= color.new(255,0,0)
workDir 	= files.list("ms0:/")
function opciones()
	x 		= 10
	y 		= 13
	lugar 	= workDir[posicion].name
	for i= limiteInf, #workDir do
		if posicion == i  then
			screen.print(x,y,files.nopath(workDir[i].name),0.6,negro,blanco)
		else 
			screen.print(x,y,files.nopath(workDir[i].name),0.6,blanco,0x0)
		end
		y 	= y + 13
	end
end
function navegador()   
	if controls.press("down") and posicion ~= #workDir then
		posicion = posicion + 1
		if posicion > 19 then limiteInf = limiteInf + 1 end
	end
	if controls.press("up") and posicion > 1 then  
		posicion = posicion - 1
		if posicion > 18 then limiteInf = limiteInf - 1 end
	end
end
function adelante()
	if workDir[posicion].directory then
		posicion 	= 1
		limiteInf 	= 1
		workDir 	= files.list(lugar)
	end
end
function atras()
   posicion 	= 1
   limiteInf 	= 1
   workDir 		= files.list(files.nofile(files.nofile(lugar)))
end
while true do
ola = image.load("ola.png");
velocidad_ola = 0.9;
posicion_ola = 480;
 
function pintarola()
 
   posicion_ola = posicion_ola - velocidad_ola;
 
   if ( posicion_ola <= 0 ) then
           posicion_ola = 480; end
 
   image.blit(ola,math.ceil(posicion_ola),0);
 
   image.blit(ola,math.ceil(posicion_ola)-480,0);
end
 
while true do
   pintarola();
   screen.flip();
end
 
while true do
	controls.read()
	navegador()
	draw.gradrect(0,0,480,272,Chocolate,Chocolate,negro,negro)
	opciones()
	pintarola();
	screen.flip()
	if controls.press("cross") then
		adelante()
	end
	if controls.press("circle") then
		atras()
end


Imagen de User170294

porq tanto while true do???

porq tanto while true do??? con uno ya te basta....

saludos

Imagen de fran98

sigue sin salirme

sigue sin salirme

Imagen de User170294

tienes q definir una funcion

tienes q definir una funcion para pintar la ola en pantalla y meter esa funcion dntro de la funcion en la q esten metidas las 3 del explorador

salu2


Imagen de fran98

¿Así?

posicion 	= 1
limiteInf 	= 1
Chocolate 	= color.new(210,105,30)
negro 		= color.new(0,0,0)
blanco 		= color.new(255,255,255)
rojo 		= color.new(255,0,0)
workDir 	= files.list("ms0:/")
function opciones()
	x 		= 10
	y 		= 13
	lugar 	= workDir[posicion].name
	for i= limiteInf, #workDir do
		if posicion == i  then
			screen.print(x,y,files.nopath(workDir[i].name),0.6,negro,blanco)
		else 
			screen.print(x,y,files.nopath(workDir[i].name),0.6,blanco,0x0)
		end
		y 	= y + 13
	end
end
function navegador()   
	if controls.press("down") and posicion ~= #workDir then
		posicion = posicion + 1
		if posicion > 19 then limiteInf = limiteInf + 1 end
	end
	if controls.press("up") and posicion > 1 then  
		posicion = posicion - 1
		if posicion > 18 then limiteInf = limiteInf - 1 end
	end
end
function adelante()
	if workDir[posicion].directory then
		posicion 	= 1
		limiteInf 	= 1
		workDir 	= files.list(lugar)
	end
end
function atras()
   posicion 	= 1
   limiteInf 	= 1
   workDir 		= files.list(files.nofile(files.nofile(lugar)))
end
while true do
ola = image.load("ola.png");
velocidad_ola = 0.9;
posicion_ola = 480;
 
function pintarola()
 
   posicion_ola = posicion_ola - velocidad_ola;
 
   if ( posicion_ola <= 0 ) then
           posicion_ola = 480; end
 
   image.blit(ola,math.ceil(posicion_ola),0);
 
   image.blit(ola,math.ceil(posicion_ola)-480,0);
end
 
	controls.read()
	navegador()
	draw.gradrect(0,0,480,272,Chocolate,Chocolate,negro,negro)
	opciones()
	pintarola();
	screen.flip()
	if controls.press("cross") then
		adelante()
	end
	if controls.press("circle") then
		atras()
end


Imagen de barney77

No, así: posicion =

No, así:

posicion 	= 1
limiteInf 	= 1
Chocolate 	= color.new(210,105,30)
negro 		= color.new(0,0,0)
blanco 		= color.new(255,255,255)
rojo 		= color.new(255,0,0)
workDir 	= files.list("ms0:/")
velocidad_ola = 0.9;
posicion_ola = 480;
ola=image.load("ola.png");	
 
function pintarola()
 
	posicion_ola = posicion_ola - velocidad_ola;
 
   if ( posicion_ola <= 0 ) then
           posicion_ola = 480; end
 
   image.blit(ola,math.ceil(posicion_ola),0);
 
   image.blit(ola,math.ceil(posicion_ola)-480,0);
end
 
function opciones()
	x 		= 10
	y 		= 13
	lugar 	= workDir[posicion].name
	for i= limiteInf, #workDir do
		if posicion == i  then
			screen.print(x,y,files.nopath(workDir[i].name),0.6,negro,blanco)
		else 
			screen.print(x,y,files.nopath(workDir[i].name),0.6,blanco,0x0)
		end
		y 	= y + 13
	end
end
function navegador()   
	if controls.press("down") and posicion ~= #workDir then
		posicion = posicion + 1
		if posicion > 19 then limiteInf = limiteInf + 1 end
	end
	if controls.press("up") and posicion > 1 then  
		posicion = posicion - 1
		if posicion > 18 then limiteInf = limiteInf - 1 end
	end
end
function adelante()
	if workDir[posicion].directory then
		posicion 	= 1
		limiteInf 	= 1
		workDir 	= files.list(lugar)
	end
end
function atras()
   posicion 	= 1
   limiteInf 	= 1
   workDir 		= files.list(files.nofile(files.nofile(lugar)))
end
while true do
	controls.read()
	navegador()
	draw.gradrect(0,0,480,272,Chocolate,Chocolate,negro,negro)
	opciones()
	pintarola();
	screen.flip()
	if controls.press("cross") then
		adelante()
	end
	if controls.press("circle") then
		atras()
end

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.