Barra de tiempo a base de Sprites ¿eficiente??

Hola,
He diseñado una barra de tiempo a base de Sprites, en total, 31 sprites para crear toda la barra.
Esto es eficiente? o hay alguna otra forma de hacerlo sin tener que crear 31 sprites...?
Fijense con la imagen
Imagen
Hombre, supongo que la DS soporta bastantes sprites, pero no, no es eficiente.

No tengo ni idea de trabajar con DS (de momento), pero la programación lógica me dice que lo normal sería tener un sprite entero con los 31 cuadrados y crear una "máscara" al sprite para que solamente se vea lo que te interesa, lo cual no sé si es posible con DS, aunque debería poderse.

La otra cosa que se me ocurre es que crees un sprite animado con 31 frames y en cada frame la barra con un trocito más, de modo que vas animándolo frame a frame a través del tiempo.

La última solución sería utilizar una barra normal de toda la vida, que me supongo que se podrá redimensionar mejor...
Para que sea más "eficiente" sin calentarte mucho la cabeza, en vez de cargar los 31 sprites carga únicamente los 4 (1 de cada color, ya que son idénticos, ¿no?). Así ahorras memoria.

También podrías hacer un sprite basado en cuatro capas, que se fuesen reduciendo según avanzase la barra de tiempo, pero imagino que será mucho más complicado...
Zor escribió:No tengo ni idea de trabajar con DS (de momento), pero la programación lógica me dice que lo normal sería tener un sprite entero con los 31 cuadrados y crear una "máscara" al sprite para que solamente se vea lo que te interesa, lo cual no sé si es posible con DS, aunque debería poderse.

Si te fijas los cuadritos se van vaciando, sale un nuevo sprite vacio... pero bueno supongo q tb se podria solucionar con 2 sprites y 2 mascaras uno con el temporizador lleno y el otro vacio... El problema esque no sabria como aplicar una mascara con Palib y que sea eficiente, todo lo que me viene en mente para hacerlo con palib me parece ineficiente.
Zor escribió:La otra cosa que se me ocurre es que crees un sprite animado con 31 frames y en cada frame la barra con un trocito más, de modo que vas animándolo frame a frame a través del tiempo.

Esta se podria hacer facilmente, pero luego tendria un mapa mas grande... pero bueno sera mas eficiente desde codigo.

La verdad que no se que hacer pq me llevara un buen rato crear la imagen.

El bucle va recorriendo los numeros de los sprites y cada segundo va cambiando el cuadrito por el otro sprite del cuadrito vacio.


Starscream-S escribió:Para que sea más "eficiente" sin calentarte mucho la cabeza, en vez de cargar los 31 sprites carga únicamente los 4 (1 de cada color, ya que son idénticos, ¿no?). Así ahorras memoria.


Lo q hago es cargar 4 paletas si, xo se sprites no puedo solo 4...

Starscream-S escribió:También podrías hacer un sprite basado en cuatro capas, que se fuesen reduciendo según avanzase la barra de tiempo, pero imagino que será mucho más complicado...


No entiendo muy bien lo que quieres decir
Supuestamente, deberias usar la Funcion de Palib de Clonar Sprite, porque a mí me pasaba lo mismito... al final lo quedé con caracteres y ya intenteré aprender a usar esa función, que no tng mucho tiempo...

SI aprendes a usarla pon un ejemplo a ver si me ayudas ^^

salu2!
Zor escribió:La otra cosa que se me ocurre es que crees un sprite animado con 31 frames y en cada frame la barra con un trocito más, de modo que vas animándolo frame a frame a través del tiempo.
Esta se podria hacer facilmente, pero luego tendria un mapa mas grande... pero bueno sera mas eficiente desde codigo.

La verdad que no se que hacer pq me llevara un buen rato crear la imagen.

El bucle va recorriendo los numeros de los sprites y cada segundo va cambiando el cuadrito por el otro sprite del cuadrito vacio.


En mi opinion esta opcion seria la mas correcta. Asi te ahorras el coñazo de eliminar el sprite para poner otro.. solo basta con animar un sprite al cabo del tiempo. De todas formas.. a que te refieres con un mapa mas grande?


P.D: Me acabo de acordar de una funcion... si estas trabajando con palib:
Pones esto al principio
PA_StartSpriteAnimEx(Pantalla: 1 en tu caso, Numero sprite,1er frame(seria el 0),Ult frame,Velocidad,0,1);
ajustando la velocidad (seguramente sea 1= 1 frame por segundo) se anime a esa velocidad.
Suikoden77 escribió:En mi opinion esta opcion seria la mas correcta. Asi te ahorras el coñazo de eliminar el sprite para poner otro.. solo basta con animar un sprite al cabo del tiempo. De todas formas.. a que te refieres con un mapa mas grande?


ME refiero a tener un mapa de largo como la barra de tiempo y alto tb como la barra de tiempo
Quieres decir que la barra de tiempo la cargas como background?
Suikoden77 escribió:Quieres decir que la barra de tiempo la cargas como background?


Algo así, pero no exactamente. Se supone que se cargan las cuatro barras a la vez, y según lo necesario sólo se muestran determinados píxeles de determinadas capas, por lo que no hay que cargar 31 sprites, sino las 4 capas.

Claro que las capas serían mucho más grandes que los 4 únicos sprites, que se pueden configurar para que se repitan en vez de tener que cargarlos en memoria como otro sprite independiente.

La de virguerías que tiene que hacer uno con 4MB de Ram... :p
8 respuestas