Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





J2me Dibujar Fragmentos De Imagenes

Iniciado por bnl, 20 de Febrero de 2006, 12:41:13 AM

« anterior - próximo »

bnl

 Gracias a todos por vuestra ayuda.
Hice una pruebas de rendimiento. Os las pongo por si a alguien le son de ayuda. Las conclusiones vienen a ser que depende mucho del movil. En un nokia 6630 la diferencia es practicamente despreciable, mientras que en un motorola v547 es bastante importante.
Dibuje un mapa de 80 tiles ismotricas con transparencias naturalmente de 32x16 pixels. El digujado de las 80 casillas se ha realizado 5 veces consecutivas para que las diferencias sean mas notables. Tambien me ha servido para darme cuenta de las enormes diferencias entre el rendimiento de un movil y del otro.

Nokia 6630
  DrawRegion   157 milisegundos
  SetClip           172 milisegundos

Motorola V547
  DrawRegion   346 milisegundos
  SetClip           430 milisegundos

Como os comente todavia no he decidido si usar midp1 o midp2. Puesto q quiero usar pantalla completa tendria q usar las APIS especificas de cada movil por lo que la compatibilidad q ganaria al usar midp1 la perderia al usar estas APIS.  Supongo que al final me decidire por MIDP2

Os posteo la funcion que he usado para dibujar las tiles  tanto con el setClip como con el drawRegion por si a alguien le sirve. Como dijo zupervaca seria mejor si ciertas variables no las calculara cada vez. Supongo q lo cambiare. Para usar el drawRegion simplemente descomentar las dos lineas comentadas y comentar la linea del drawRegion.

public static void dibujarCasilla(Graphics g, String tileset, int casilla, int x, int y){
      Image img = getImagen(tileset);
      int numCasillasPorFila = img.getWidth() / Constantes.ANCHO_CASILLA;      
      int fila = (casilla-1) / numCasillasPorFila;      
      int col = (casilla-1) % numCasillasPorFila;      
     
      //g.setClip(x, y, Constantes.ANCHO_CASILLA, Constantes.ALTO_CASILLA);
      //g.drawImage(img, x - (col*Constantes.ANCHO_CASILLA),    y - (fila*Constantes.ALTO_CASILLA ), Graphics.TOP|Graphics.LEFT);
      g.drawRegion(img, col * Constantes.ANCHO_CASILLA, fila * Constantes.ALTO_CASILLA, Constantes.ANCHO_CASILLA, Constantes.ALTO_CASILLA, Sprite.TRANS_NONE, x, y, Graphics.TOP|Graphics.LEFT);      
     
   }


Saludos
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

bnl

 Retomo este post para plantear otra cuestion, a ver si me podeis echar una mano

Quiero dibujar los personaje mediante la composicion de varias imagenes (piernas, brazos, cabeza, objetos que lleve, etc). Lo cual me obliga a tener que conocer en que posicion va cada elemento asi como q region dentro del fichero q contiene todas las imagenes.  Asi pues serian 6 datos, posiciones x e y en la que se dibuja, posicion x e y en la q se encuentra dentro del fichero de imagen y ancho y alto del elemento dentro del fichero de la imagen.

Toda esta informacion tendria q tenerla para cada fragmento de cada personaje.

¿Se os ocurre una forma mejor de hacerlo?

Si os parece correcta esta forma ¿como guardariais esa informacion? ¿mediante muchisimas constantes? en un fichero binario y luego leerlas a muchisimas variables ? ¿alguna otra alternativa?

Gracias
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

_XUTI_H_

 Una pregunta, ¿la imagen estaria animada?

De todas formas creo que es la representacion mas apropiada para el problema. Lo que pasa es que igual te supone demasiado coste dibujar muchos fragmentos de cada personaje, sobretodo si hay varios de ellos en pantalla.
La mejor manera de hacerlo, si no estan animados los personajes, seria montar la imagen (en una nueva imagen) final antes de dibujarla, pero esto presenta varios incovenientes que ya se mencionarón en el otro "famoso hilo" que mencionamos en post anteriores sés y yo.

Si quieres hacerlo bien create una herramienta que, de manera visual rollo Jpanel y usando el ratón, te permita crear objetos como rectangulos que delimiten regiones de la imagen. Podrias permitir editar valores como la posicion respecto a un punto central del personaje, una cadena asociada (para la utilidad que les quieras dar), etc. Después lo puedes guardar directamente a un archivo binario. En j2se es facil y te asegura un mayor grado de compatibilidad a la hora de compartir código con la aplicación MIDlet.

Otra opción es copiar las coordenadas (miradas a ojo en tu editor de imagenes) y propiedades en txt o un xml (con un formato que le quieras dar) y luego te creas tu aplicacion que lea el fichero y lo pase a un binario.

Bueno, o como quieras  :lol:

Bueno, un saludo, me voy a comer  (genial)  
UTI

bnl

 
Serian personajes que se moverian, osea q estarian animados (y con transparencias)
Lo del coste en tiempo de dibujar muchos fragmentos ya lo habia pensado, pero se gana mucho en cuanto a tamaño del jar y en riqueza de los graficos. Por ejemplo si un personaje esta compuesto de 4 fragmentos (cabeza, tronco, piernas y brazos) con 3 imagenes de cada fragmento tendriamos 3^4=81 personajes diferentes creados solo a partri de 12 pequeñas imagenes (q irian todas en un solo fichero)
Supongo q si no pinto muchos personajes el coste en rendimiento sera asumible, pero todavia no he hecho pruebas.

¿Los inconvenientes a los q te refieres con lo de montar la imagen en una nueva imagen seria la perdida de transparencia? Si es asi, no me valdria, ya q las imagenes tienen transparencias.

Sobre lo del editor que comentas ya me cree uno para un juego que hice hace no mucho (el juego de la serpiente, snake o nibbles). Era muy sencillo, tenia un combo en el que seleccionabas la resolucion del movil y se te creaba un area de esas dimensiones, donde haciendo 2 clicks establecias los dos puntos q definian cada una de las rectas que tendria el nivel. Todas las rectas se guardaban en una estructura y luego se almacenaban en un fichero binario q es el q leia el juego en el movil. Lo hicen en VB.Net, q es el lenguaje con el q programo en el curro y con el q me encuentro mas comodo.
Si a alguno le interesa este pequeño y cutre editor que me mande un PM y se lo envio por mail con el codigo fuente, eran 4 lineas de código.

Saludos y gracias.


Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

_XUTI_H_

 Un editor para lo que tu quieres, y las funciones que te permitan crear y cargar tu formato es lo que solo tienen algunas compañias de juegos para móvil.

Es un trabajo laborioso, pero efectivamente, como tu comentas, te da una ventaja tecnologica brutal respecto a los demás. Si creas un buen sistema no dudes que habrán bastantes compañias que estén interesados en comprarte la tecnologia, es más, acudirán a ti como moscas a la miel (por no hablar mal).

Pues nada, suerte con tu cruzada tecnologica!!  B)  
UTI

bnl

 Lo que hice es bastante sencillote y tonto, pero no necesito mucho mas. Asi q no creo q me forre con el

Saludos
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.