Anuncios Google

no enough memory

Como es que cuando estoy navegando por mi programa aveces me salta:

 

no enough memory

 

Y tengo que reiniciar

 

Codigo:

 

os.cpu(333);
 
 
black=color.new(0,0,0)
azul=color.new(0,128,192)
blanco=color.new(255,255,255)
 
bateria100 = image.load("Imagenes/100%.png")
bateria75 = image.load("Imagenes/75%.png")
bateria50 = image.load("Imagenes/50%.png")
bateria25 = image.load("Imagenes/25%.png")
 
navegacion = sound.load("Sonidos/navegacion.wav")
 
 
menu = {}
menu[1] = image.load("Imagenes/menu1.png")
menu[2] = image.load("Imagenes/menu4.png")
menu[3] = image.load("Imagenes/menu5.png")
menu[4] = image.load("Imagenes/menu6.png")
menu[5] = image.load("imagenes/menu7.png")
options = 5
mActual = 1
while true do
 
controls.read()
screen.clear(black)
image.blit(0,0,menu[mActual])
 
if controls.press("up") then
    if mActual<=1 then mActual=5 else mActual = mActual - 1 end
elseif controls.press("down") then
    if mActual >=5 then mActual = 1 else mActual = mActual + 1 end
end
if controls.cross() then sound.play(navegacion);
end
if controls.cross() and mActual == 1 then
dofile("System/Explorer.lua")
end
if controls.cross() and mActual == 2 then
dofile("System/USB.lua")
end
if controls.cross() and mActual == 3 then
dofile("System/Botones.lua")
end
if controls.cross() and mActual == 4 then
dofile("System/Creditos.lua")
end
if controls.cross() and mActual == 5 then
dofile("System/Salir.lua")
end
 
porcentajeB = batt.percent()
screen.print(432,8,porcentajeB.."%",blanco)
 
 if batt.percent() <= 100 and batt.percent() > 75 then bateria100:blit(402,4)
   elseif batt.percent() <= 75 and batt.percent() > 50 then bateria75:blit(402,4)
   elseif batt.percent() <= 50 and batt.percent() > 25 then bateria50:blit(402,4)
   elseif batt.percent() <= 25 and batt.percent() >= 0 then bateria25:blit(402,4) end
 
screen.flip()
 
end




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 sting18

solo limpia tu code a la hora

solo limpia tu code a la hora de cambiar de script ejemplo

function Limpieza()
imagen = nil collectgarbage("collect")
end

ya solo pones la funcion antes del dofile y listo.
en tu caso que cargas imagenes en tabla usa bucles for y sera mas rapido y menos escribir saludos. 


Imagen de Tutos14

Solo lo pongo debajo de un

Solo lo pongo debajo de un dofile o de todos?

 

Y aparte el los otros script?

Imagen de sting18

Siempre detras de cada dofile

Siempre detras de cada dofile y tienes que poner en nil todas las imagenes y si en los otros script tambien ya que a cada cambio limpias porque si no vuelve a cargar la ram.


He visto codigos muy

He visto codigos muy ordenados y otros no tanto, al igual que antes hacia codigos desordenados y con el tiempo y siguiendo consejos los he mejorado. Prueba ha cargar todas las imagenes que necesitaras al comienzo y ya luego las liberas. en caso de necesitar demasiadas, cosa que dudo. antes de salir de un script a otro, libera las imagenes que no vas a usar. Para referencia chaka la documentacion es con :free() y nil, me parece.

 

¿En cada archivo cargas

¿En cada archivo cargas variables?

Imagen de Tutos14

Si

Haber por ejemplo en el apartado USB Cargo las imagenes de las baterias, dos sonidos, y la imagen de fondo y luego aparte lo demas



Más imágenes de baterías?

Más imágenes de baterías? Para qué? Una vez declaradas en un script, las puedes usar en cualquier otro sin problemas.

Por cierto... si las imágenes de tu menu son del tamaño de la pantalla del psp, puedes probar a reducirlas. Por ejemplo, cargas un fondo sin letras, y los letreros de cada opción los cargas por separado (sólo el letrero,con el tamaño suficiente para contener el texto de cada opción, y con fondo transparente). De esta manera se reduce mucho el uso de ram ;)

Otra cosa... el screen.clear es totalmente inútil si lo usas con color negro, LuaDEV pinta toda la pantalla de negro cuando usas el flip :P

Imagen de Tutos14

Pues al quitarle el

Pues al quitarle el imagen.load de las baterias en los otros script no se muestran

Si haces el blit de que se

Si haces el blit de que se deben mostrar.

Pues eso está mal hecho,

Pues eso está mal hecho, cargao todo al principio y usa funciones ( Lua da malos hábitos de programación y ahora mismo lo estoy viendo contigo, sigue nuestros consejos para programar de una forma más limpia Guiño)

Imagen de Dioni0396

Tutos14

SIEMPRE QUE POSTEES UNA DUDA

SIEMPRE

Pon el codigo de tu aplicacion, sino, NUNCA vamos a poder ayudarte, ya que no somos adivinos, por desgracia.

Me imagino que debes cargar

Me imagino que debes cargar cosas a cada pasada de bucle.

Pues eso... no tienes

Pues eso... no tienes suficiente memoria. Debes liberar objetos que no vayas a usar, como imágenes o sonidos (
especialmente si usas dofile)

Imagen de Tutos14

Pero del homebrew o de la

Pero del homebrew o de la PSP?

Imagen de Zero40

del...

del homembrew eso te salta porque se llena la memoria ram (eso creo)

siusas luadev me parece que hay una funcion para liberar un poco de espacio 

loadcallback o algo asi .Siquieres mas info mira la documentacion



Imagen de barney77

Es

Es collectgarbage();

Recomiendo usarala despues de liberar el objeto, algo así:

liberador(objeto) = function
	objeto:free();
	objeto=nil
		collectgarbage("collect");
end

Y la llamarias así:

sonido=sound.load(".");
play=true;
 
while true do
	controls.read();
		if (play==true) then
			sonido:play(1);
		elseif (play==false) then
			liberador(sonido);
		end
	if (controls.press("cross")) then
			sonido:stop();
			sonido:percent(0);
			play=false;
	end
	screen.flip();
end

Basicamente lo que hace esto es que empezará a reproducir el sonido, si presionas X, lo parara y lo reseatará a 0 y lo liberará por medio de la función antes definida.

Salu2.

PD: Basicamente la funcion liberador serviria para objetos que se pueden liberar por medio de lua, para liberar variables, pues ponlas en nil, siempre es recomendable dejar en nil lo que se va a liberar(este liberado por medio de las funciones de lua o no).

Imagen de Chimecho

ne

intenta hacer algo como

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

liberador(imagen)

screen.print(10,10,type(imagen))

te sorprenderá el resultado ;)

Edito: mmm, nada, el free ya las pone en nil, la prueba sería si usas animlib por ejemplo.



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 barney77

Ok, intetanré

Ok, intetanré

Imagen de Tutos14

Solo poniendo

Solo poniendo esto:

 

liberador(objeto) = function
	objeto:free();
	objeto=nil
		collectgarbage("collect");
end

En el bucle dices que funciona?



Antes de nada, edita el post

Antes de nada, edita el post con tu código.

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.