Buenas, iré directo al grano.
Estoy programando una aplicación para NDS en Micro Lua DS, esta aplicación tiene distintos menús o pantallas que utilizan distintas imágenes de fondo, todas en png y todas pesan menos de 10KB.
Puedo cambiar del menú principal a uno secundario sin problemas, todas las imágenes se mostrarán, no hay problemas en absoluto, sin embargo al volver al menú principal la imagen de fondo el 50% de las veces no carga (a veces más, a veces menos), se muestra completamente en blanco, sin embargo el menú secundario siempre va a cargar perfectamente y a mostrar las imágenes. Cada vez que intento cargar la imagen del menú principal puede ocurrir que cargue o que no cargue, sin importar cuantas veces lo intente es una lotería cada vez que vuelvo al menú principal.
Al cargar el menú secundario tengo funciones y demás para descargar las imágenes que no se van a utilizar, no las dejo en la memoria.
Utilizo, de forma constante al cambiar de pantallas:
Image.destroy(imagen) imagen=nil
(imagen:destroy sencillamente no existe, da error.)
Además tengo un collectgarbage("collect") antes de volver a cargar de nuevo las imágenes del menú principal y un collectgarbage("step") en el bucle principal, todo el tiempo funcionando sin causar ningún tipo de ralentización. Los modos "stop" y "restart" no sé cómo ni cuándo utilizarlos.
La verdad es que me tiene mosqueado, tengo variables mostradas en pantalla que me indican que la DS tiene memoria libre suficiente todo el tiempo. Garbage(count), palette y VRAM, y siempre anda sobrada de memoria, sin embargo a veces carga y a veces no, cuestión de suerte, y no creo que eso sea normal.
Gracias por las posibles respuestas que pudieran llegar. Saludos.
Claro
Claro, image.destroy NO Existe, la que existe es Image.destroy, te recuerdo que Lua distingue mayúsculas y minúsculas esto... no he dicho nada..., y lo de la imagen puede salirte mal por dos razones:
Siempre puedes poner el code para que le hechemos un vistazo por si el fallo esta ahí...
Saludos!
Documentación MicroLua DS 4.5: http://code.google.com/p/microlua/wiki/ApiFourDotFive
Gracias por la respuesta
Gracias por la respuesta.
Actualmente utilizo la versión de Micro LUA DS: 4.5 (creo recordar) claro, sin embargo descargué la 4.5.2 y sencillamente no arrancaba en mi TTDS. Y siempre tengo en favoritos la documentación para tenerla abierta mientras programo.
Desde PhotoShop (o Gimp, depende si uso Linux o Windows) pongo la imagen en modo "Color Indexado" a 256 colores, todas las tengo así, incluso esta imagen que me está dando problemas la puse a 128 colores, por si acaso. Juraría que no hay que hacer nada más para optimizarlas.
El problema es ese... que a veces carga y a veces no, cuando le da el punto. Y mi miedo ahora es que, a medida que siga programando, me pase con más menús y demás partes de la aplicación.
El código (en su totalidad) es muy muy largo pero lo que es la parte que carga la imagen es un:
Simple y llanamente, claro que antes de todo esto está la parte que descarga los archivos innecesarios de la pantalla anterior, para liberar memoria.
Prueba a
Prueba a quitar la primera / del load, si sigue sin funcionarte cargala a la VRAM a ver que tal...
Saludos!
Lo intenté, y de hecho eso
Lo intenté, y de hecho eso mismo estuvo dándome errores un buen rato, ya que al no ponerla no encuentra el archivo. Sinceramente creo que es un error del código fuente del Lua más que un error mío, lo que me extraña es que nadie haya reportado el problema antes.
Si quieres
Si quieres puedes pasarme el code por MP por si hay algun problema al cargar la imágen dos veces o algo así...
Saludos!
Okay ahora te lo envío,
Okay ahora te lo envío, gracias por la ayuda.