ES KAsi UN blog

Blog de Unkasoft, donde hablamos de programación de juegos para móviles, advergaming, marketing móvil, la industria de los videojuegos, metodologías ágiles y todos aquellos temas que nos preocupan en nuestro día a día

22 septiembre 2006

Ajustando Battlewizard bajo MacosX

Un dato importante acerca de Battlewizad es que puede ejecutarse bajo cualquier S.O. que soporte Java 1.4 o superior; esta caracterísitica le hace adecuado para cualquier usuario, use Windows, Linux o incluso Mac.
En este post cubriremos la ejecución de Battlewizard sobre una plataforma MacosX Tiger.
Cualquiera que utilice habitualmente MacosX sabrá que existen ciertos detalles importantes bastante diferentes de otros sistemas operativos; porejemplo, las barras de menú se encuentran siempre en la parte superior de la pantalla, justo al lado de la manzana. Con unos sencillos ajustes podemos dar a nuestra aplicación Java un look and feel nativo de modo que los usuarios de MacosX puedan instalar y ejecutar esta aplicación sin ser consciente de que están ejecutando una aplicación multi-plataforma.

Es importante darse cuenta de que Battlewizard contará con un lanzador para los sistemas MacosX que hará uso de todos estos temas.

1.- Usando JVM sin ajustes

Si lanzamos Battlewizard con una maquina JVM sin ajustes, tendrá el siguiente aspecto:



2.- Colocando la barra de menús en su sitio

Haremosuso de algunas propiedades de sistema de JVM para conseguir esto; simplemente añade el siguiente argumento a la linea de ejecución de jvm para el lanzamiento de battlewizard:

-Dapple.laf.useScreenMenuBar=true

Y el resultado es el siguiente:


Se puede ver como labarra de menús ahora está en la zona superior.

3.- Cambiando el nombre de la clase....

Como se puede ver en la última imagen, la barra de menús descansa donde debe, pero el nombre de la aplicación es el nombre completo de la aplicación, junto con sus paquetes.
Eso carece de estilo, así que lo cambiamos para poder ver el nombre en ese punto.
En este caso, usamos una opción de jvm especial para MacosX en vez de una propiedad del sistema:

-Xdock:name="Battlewizard"

Y aquí llega el resultado:


4.- Añadiendo un a entrada "About" en el menú del sistema

No es realmente importante, pero todas las aplicaciones MacosX tienen uno de esos así que... por qué no nosotros?
Usando la propiedad del sistema:

-Dcom.apple.mrj.application.apple.menu.about.name=Battlewizard

nos permitirá ver la siguiente opción de menú:


JVM por defecto habilita el Double Buffering para todos sus gráficos. El resultado es una animación más suave y eliminación de parpadeos.
MacosX usa un engine gráfico, llamado Quartz 2D, aprte del framework gráfico principal; es un engine de dibujo en 2D avanzado independiente de resolución y dispositivo. Sus potentes características incluyen capas de transparencia, dibujo basado en paths, offscreen rendering, gestión avanzada del color así como creación, visualización y parseo de documentos PDF.



Este engine siempre realiza Double Buffering así que, si no lo desactivamos en Java, tendremos un doble buffering de un dobre buffering. Funcionar, funciona, pero no veremos mucha mejora y en cambio si que notaremos un descenso del rendimiento.

Para poder deshabilitar el doble buffering de Java, usamos la siguiente propiedad del sistema:

-Dawt.nativeDoubleBuffering=true


6.- Otras opciones

Dos opciones más pueden usarse para cambiar nuestra aplicación y hacerla más a tono con MacosX.

-Dcom.apple.mrj.application.growbox.intrudes=false

La opción de arriba hace que las aplicaciones respeten la "zona de crecimiento" de una ventana de MacosX; en caso contrario, los componentes podrían invadir esa "zona de crecimiento".




-Dcom.apple.macos.smallTabs=true

La última de las opciones es para ajustar el tamaño de las pestañas. Es difícil hacer diseños GUI para aplicaciones multi-plataforma si quieres establecer con precisión el tamaño y posición de los componentes. Un obstáculo es que el tamaño de las fuentes es diferente en las distintas plataformas. Apple te permite elegir entre Pestañas grandes o pequeñas, siendo por defecto las primeras.

Conclusión

Aunque Java es un lenguaje de desarrollo multi-plataforma, debemos ser conscientes de que cada una de estas plataformas tiene pequeños detalles que pueden ser activados. Es muy útil conocer cómo cambiar estas caractéristicas con el menor esfuerzo posible.

Etiquetas:


Comentarios:

Un post muy útil! Espero recordarlo cuando tenga que hacer un aplicación Java para Mac : )
 


Publicar un comentario



<< Home

This page is powered by Blogger. Isn't yours?