En este tutorial conoceremos lo que es el uso de BitmapFont en LibGDX y algún uso que le podemos dar como crear un menú, tabla de posiciones, ayuda para el usuario, etc.
BitMapFont. Consiste en dos archivos, un archivo imagen con las fuentes dibujadas en el, y un archivo con extensión *.FNT que es un archivo de texto donde se indican el nombre de la fuente, coordenadas de cada carácter de la fuente, tamaño, espaciado, etc.
Para crear estos archivos disponemos en la red de varios editores tanto para crear las fuentes desde cero o convertir una fuente TTF a *.FNT con su respectivo archivo de imagen, uno de estos editores bastante sencillo y libre es Bitmap Font Generator.
Vamos a lo nuestro, crearemos un pequeño menú para nuestro juego «Space Invaders» todo un clásico 🙂
Herramientas
– Eclipse Indigo con Android y LibGDX instalado y configurado.
– Dos fuentes TTF que convertiremos a FNT, puedes hacer uso de estos «Space Invaders Fonts»
– Lógicamente Bitmap Font Generator. Descargalo y aprende como usarlo, te tomara 5 minutos 🙂
Tiempo: 20 minutos
Nivel: Java intermedio, android básico. Es recomendable que si es tu primera ves en esta web, leas los post anteriores sobre LibGDX ya que obviaremos muchas cosas, esto para no estar repitiendo lo mismo en cada post.
1.Crea un nuevo Application Android Project con la siguiente configuración:
Application Name: LibGDX Fonts
Project Name: LibGDXFonts
Package Name: com.bolivia.libgdxfonts
Activity: Blank Activity
Activity Name: MainActivity.java
Layout Name: activity_main.xml
3. Una vez que tengamos nuestras fuentes TTF convertidas a FNT, debemos añadir los archivos a la carpeta ASSETS de preferencia en una carpeta FONTS/
- assets/ --- fonts/ ----------- mercutio_basic_0.png ----------- mercutio_basic.fnt ----------- Thirteen-Pixel-Fonts_0.png ----------- Thirteen-Pixel-Fonts.fnt
Los nombres son solo de referencia, pueden tener el nombre que tu quieras.
4. Crea una nueva clase en el paquete com.bolivia.libgdxfonts, la clase se llamara «MyGame.java«.
01 package com.bolivia.libgdxfonts; 02 import com.badlogic.gdx.ApplicationListener; 03 import com.badlogic.gdx.Gdx; 04 import com.badlogic.gdx.graphics.GL10; 05 import com.badlogic.gdx.graphics.OrthographicCamera; 06 import com.badlogic.gdx.graphics.g2d.BitmapFont; 07 import com.badlogic.gdx.graphics.g2d.SpriteBatch; 08 09 public class MyGame implements ApplicationListener { 10 11 BitmapFont font_a; 12 BitmapFont font_b; 13 CharSequence[] str_a = new CharSequence[3]; 14 CharSequence[] str_b = new CharSequence[3]; 15 16 SpriteBatch spriteBatch; 17 private OrthographicCamera camera; 18 private float game_ancho = 480; 19 private float game_alto = 800; 20 21 22 @Override 23 public void create() { 24 camera = new OrthographicCamera(); 25 camera.setToOrtho(false, game_ancho,game_alto); 26 //El texto que se usara en el juego 27 str_a[0] = "ESPACE"; 28 str_a[1] = "INVADER"; 29 str_a[2] = "Start"; 30 31 str_b[0] = "created by jc Mouse"; 32 str_b[1] = "BOLIVIA"; 33 str_b[2] = "Just user your mouse to play!"; 34 35 spriteBatch = new SpriteBatch(); 36 //se cargan las fuentes 37 font_a = new BitmapFont(Gdx.files.internal("fonts/Thirteen-Pixel-Fonts.fnt"), 38 Gdx.files.internal("fonts/Thirteen-Pixel-Fonts_0.png"), false); 39 40 font_b = new BitmapFont(Gdx.files.internal("fonts/mercutio_basic.fnt"), 41 Gdx.files.internal("fonts/mercutio_basic_0.png"), false); 42 43 } 44 45 @Override 46 public void dispose() { 47 spriteBatch.dispose(); 48 font_a.dispose(); 49 font_b.dispose(); 50 } 51 52 @Override 53 public void pause() {/*...*/} 54 55 @Override 56 public void render() { 57 Gdx.gl.glClearColor( 0, 0, 0, 1); 58 Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 59 // 60 spriteBatch.setProjectionMatrix( camera.combined ); 61 62 //colores de la fuente 63 font_a.setColor(0, 1f, 0, 1.0f); 64 font_b.setColor(1f, 0.1f, 0, 1.0f); 65 66 spriteBatch.begin(); 67 font_a.draw(spriteBatch, str_a[0], getFontX( font_a, str_a[0]) , 600); 68 font_a.draw(spriteBatch, str_a[1], getFontX( font_a, str_a[1]), 520); 69 70 font_b.draw(spriteBatch, str_b[0], getFontX( font_b, str_b[0]), 460); 71 font_b.draw(spriteBatch, str_b[1], getFontX( font_b, str_b[1]), 400); 72 73 font_a.draw(spriteBatch, str_a[2], getFontX( font_a, str_a[2]), 260); 74 font_b.draw(spriteBatch, str_b[2], getFontX( font_b, str_b[2]), 200); 75 spriteBatch.end(); 76 } 77 78 @Override 79 public void resize(int arg0, int arg1) {/*...*/} 80 81 @Override 82 public void resume() {/*...*/} 83 84 /** 85 * Retorna la coordenada en X del texto segun el tipo de fuente y la longitud del texto 86 * @param BitmapFont font Tipo de fuente 87 * @param CharSequence str Texto Ej. "Hola mundo" 88 * */ 89 private float getFontX( BitmapFont font , CharSequence str ) 90 { 91 float ancho_str = font.getBounds( str ).width; 92 float fontX = game_ancho/2 - ancho_str/2; 93 return fontX; 94 } 95 }
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
El laberinto del terror es un juego en el que haciendo uso del ratón y de tu pulso de borracho debes cruzar distintos la...
Los mejores días del marco de java swing se han ido. Las aplicaciones de escritorio perdieron popularidad y todo está fo...
Tradukisto es una biblioteca para Java 8 creada para convertir números enteros o cantidades de dinero a sus equivalentes...
VLC Media Player es un reproductor multimedia de código abierto muy popular desarrollado por el proyecto VideoLAN. VLCJ ...
Java proporciona Collection Framework, que define varias clases e interfaces para representar un grupo de objetos como u...
Common Object Request Broker Architecture (CORBA) es un estándar que permite que diversos componentes de software escrit...
Los comentarios estan cerrados
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Cómo hago para detener la música que suena cada vez que abro la página? Es muy molesto, no encuentro una opción para detenerla y tengo que bajar el volumen para no escucharla…
:/ cual musica?????????
No se puede descargar tu ejemplo hermano, como me lo puedes mandar?
ahi esta mi correo
Me funciono muy bien!! Gracias
Lo que yo busco es crear archivos txt, no solo leerlos
Hola!, alguna idea de como meter un JtextArea y respete formato de texto (negritas, curisvas, etc) enu njTAble?
hola puedes subir el link nuevamente? gracias
MUY bueno JC, excelente la presentacion
necesito ayuda para hacer un rompecabeza en visual basic! 😉
Tengo un error al correrlo al parecer la etiqueta con el nombre registro solo lo permite hacerlo una vez y con un registro en la base de datos , pero si agrego un segundo registro en la base de datos me lanza el siquiente error
org.jdom2.IllegalAddException: The Content already has an existing parent «registro»
Tengo un problema y no se solucionarlo me da el siquiente error, cuando la tabla tiene mas de dos regisrtros:
«main» org.jdom2.IllegalAddException: The Content already has an existing parent «registro»
Hola, después de terminar el instalador o la interfaz en java que haces para empaquetarlo y hacer el instalador ?? lo vuelves a realizar en visual studio?? o se utiliza otro programa