Herramientas de usuario

Herramientas del sitio


frames

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
Última revisión Ambos lados, revisión siguiente
frames [2013/07/21 12:07]
al-khwarizmi
frames [2013/07/21 12:13]
al-khwarizmi
Línea 3: Línea 3:
 Los frames son áreas de tamaño fijo o variable que se pueden añadir a la ventana de juego para mostrar imágenes. Los frames se pueden añadir o quitar de la ventana dinámicamente,​ además de ir cambiando la imagen que muestran en cada momento. Esto permite, por ejemplo, implementar el clásico interfaz que muestra una imagen de la habitación en la que se encuentra el jugador en la parte superior de la ventana y el texto de la descripción debajo, entre otras funcionalidades. Los frames son áreas de tamaño fijo o variable que se pueden añadir a la ventana de juego para mostrar imágenes. Los frames se pueden añadir o quitar de la ventana dinámicamente,​ además de ir cambiando la imagen que muestran en cada momento. Esto permite, por ejemplo, implementar el clásico interfaz que muestra una imagen de la habitación en la que se encuentra el jugador en la parte superior de la ventana y el texto de la descripción debajo, entre otras funcionalidades.
  
-Los siguientes métodos para crear y borrar frames se pueden ejecutar sobre un objeto de la clase ''​MultimediaInputOutputClient'':​ ((el método ''​getIO()''​ de la clase ''​Player''​ nos devuelve una instancia de ''​MultimediaInputOutputClient''​ cuando el jugador esté utilizando un cliente de juego con soporte multimedia, como lo es el interfaz de ventanas de Aetheria Game Engine. Nótese que otros clientes, como el de línea de comandos cheapAGE, pueden no soportar multimedia y por lo tanto no permitir el uso de frames. Hay más información sobre esto (incluyendo cómo se comprueba si un cliente soporta multimedia) en la sección sobre [[imágenes]].))+Los siguientes métodos para crear y borrar frames se pueden ejecutar sobre un objeto de la clase ''​MultimediaInputOutputClient'':​ ((el método ''​getClient()''​ de la clase ''​Player''​ nos devuelve una instancia de ''​MultimediaInputOutputClient''​ cuando el jugador esté utilizando un cliente de juego con soporte multimedia, como lo es el interfaz de ventanas de Aetheria Game Engine. Nótese que otros clientes, como el de línea de comandos cheapAGE, pueden no soportar multimedia y por lo tanto no permitir el uso de frames. Hay más información sobre esto (incluyendo cómo se comprueba si un cliente soporta multimedia) en la sección sobre [[imágenes]].))
  
 === Métodos para crear frames === === Métodos para crear frames ===
Línea 31: Línea 31:
 Aunque estos ejemplos deberían cubrir todos los casos típicos que se podrían necesitar en aventuras en AGE, las cadenas de especificación todavía tienen más funcionalidad que no se muestra aquí. Para más detalles avanzados sobre cómo podemos configurar el tamaño de los frames creados con este método, conviene saber que utiliza la librería [[http://​www.miglayout.com|MigLayout]]. Las cadenas que podemos utilizar aquí aparecen especificadas en la documentación de dicha librería, véase la sección "​Component Constraints"​ de la [[http://​migcalendar.com/​miglayout/​cheatsheet.html|MigLayout cheat sheet]]. Aunque estos ejemplos deberían cubrir todos los casos típicos que se podrían necesitar en aventuras en AGE, las cadenas de especificación todavía tienen más funcionalidad que no se muestra aquí. Para más detalles avanzados sobre cómo podemos configurar el tamaño de los frames creados con este método, conviene saber que utiliza la librería [[http://​www.miglayout.com|MigLayout]]. Las cadenas que podemos utilizar aquí aparecen especificadas en la documentación de dicha librería, véase la sección "​Component Constraints"​ de la [[http://​migcalendar.com/​miglayout/​cheatsheet.html|MigLayout cheat sheet]].
  
-Por último, a veces puede convenir dividir un frame en dos partes, por ejemplo para tener un sub-frame arriba a la izquierda y otro arriba a la derecha. Esto se hace con el siguiente método:+Por último, a veces puede convenir dividir un frame en dos partes, por ejemplo para tener un sub-frame arriba a la izquierda y otro arriba a la derecha. Esto se hace con el siguiente método, también disponible sólo desde la versión 1.3.2 de AGE:
  
 <code java>/​*clase InputOutputClient*/​ void splitFrame ( String parentName , String childName1 , String childSpecs1 , String childName2 , String childSpecs2 )</​code>​ <code java>/​*clase InputOutputClient*/​ void splitFrame ( String parentName , String childName1 , String childSpecs1 , String childName2 , String childSpecs2 )</​code>​
 Este método toma el frame cuyo nombre es '​parentName'​ (que tiene que haber sido creado mediante el método anterior, que asigna nombre a los frames) y lo divide en dos sub-frames, el primero con nombre '​childName1'​ y el segundo con nombre '​childName2'​. Los parámetros '​childSpecs1'​ y '​childSpecs2'​ dan información a AGE sobre el tamaño y localización de los frames hijos, teniendo el mismo formato que el parámetro '​frameSpecs'​ del método anterior. Este método toma el frame cuyo nombre es '​parentName'​ (que tiene que haber sido creado mediante el método anterior, que asigna nombre a los frames) y lo divide en dos sub-frames, el primero con nombre '​childName1'​ y el segundo con nombre '​childName2'​. Los parámetros '​childSpecs1'​ y '​childSpecs2'​ dan información a AGE sobre el tamaño y localización de los frames hijos, teniendo el mismo formato que el parámetro '​frameSpecs'​ del método anterior.
  
-Así, podríamos usar el siguiente código para tener un frame superior izquierdo y otro superior derecho:+Así, podríamos usar el siguiente código para tener un frame superior izquierdo y otro superior derecho, del mismo tamaño, y cada uno con una imagen escalada al tamaño del frame:
  
 <code java> <code java>
Línea 44: Línea 44:
   cliente.addFrame ( "​izquierdo"​ , "west, height 25%!" )   cliente.addFrame ( "​izquierdo"​ , "west, height 25%!" )
   cliente.splitFrame ( "​izquierdo"​ , "​izarriba",​ "​north,​ height 50%!", "​izabajo",​ "​south,​ height 50%!" )   cliente.splitFrame ( "​izquierdo"​ , "​izarriba",​ "​north,​ height 50%!", "​izabajo",​ "​south,​ height 50%!" )
-  cliente.showImageInFrame( world.getResource("​imagensuperiorizquierda.png"​) , "​izarriba"​ , ImageConstants.FIT_BOTH ) +  cliente.useImage( world.getResource("​imagensuperiorizquierda.png"​) ​, ImageConstants.FRAME ​, "​izarriba"​ , ImageConstants.FIT_BOTH ) 
-  cliente.showImageInFrame( world.getResource("​imageninferiorizquierda.png"​) , "​izabajo"​ , ImageConstants.FIT_BOTH )+  cliente.useImage( world.getResource("​imageninferiorizquierda.png"​) ​, ImageConstants.FRAME ​, "​izabajo"​ , ImageConstants.FIT_BOTH )
 } }
 </​code>​ </​code>​
Línea 69: Línea 69:
 Creamos un frame en la parte superior de la pantalla de 300 píxeles de alto, y que incluye la imagen "​titulo.png"​ sin escalar. Creamos un frame en la parte superior de la pantalla de 300 píxeles de alto, y que incluye la imagen "​titulo.png"​ sin escalar.
 <code java> <code java>
-if ( jugador.getIO() instanceof MultimediaInputOutputClient && jugador.getIO().isGraphicsEnabled() )+if ( jugador.getClient() instanceof MultimediaInputOutputClient && jugador.getClient().isGraphicsEnabled() )
 { {
-  MultimediaInputOutputClient theClient = jugador.getIO();+  MultimediaInputOutputClient theClient = jugador.getClient();
   URL imageURL = world.getResource("​titulo.png"​);​   URL imageURL = world.getResource("​titulo.png"​);​
   theClient.addFrame ( ImageConstants.TOP , 300 );   theClient.addFrame ( ImageConstants.TOP , 300 );
frames.txt · Última modificación: 2013/07/21 12:19 por al-khwarizmi