2012-07-16 84 views
0

我正在尝试更改缺陷图形API的缺省字体以简单地绘制我正在编写的游戏的标题,但似乎无法使其工作(它无法正常工作什么都不画,只是把屏幕留空)。我想使用其中一种标准的Java字体(Verdana)。更改缺陷图形API中的默认字体

这里是我使用的设置字体代码:

import java.awt.Font; 

import org.newdawn.slick.AppGameContainer; 
import org.newdawn.slick.BasicGame; 
import org.newdawn.slick.Color; 
import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.SlickException; 
import org.newdawn.slick.UnicodeFont; 

public class Controller extends BasicGame { 
UnicodeFont uFont; 

@Override 
public void render(GameContainer container, Graphics g) throws SlickException { 
    g.setFont(uFont); 
    g.setColor(Color.white); 
    g.drawString("Hello World!", 50, 50); 
} 

@Override 
public void init(GameContainer container) throws SlickException { 
    //Set font 
    Font font = new Font("Serif", Font.PLAIN, 20); 
    uFont = new UnicodeFont(font, font.getSize(), font.isBold(), font.isItalic()); 
} 

/** 
* @param args 
* @throws SlickException 
*/ 
public static void main(String[] args) throws SlickException { 
    //Set up application 
    Controller c = new Controller("Tetris"); 
    AppGameContainer app = new AppGameContainer(c); 
    app.setDisplayMode(500, 800, false); 

    //Start application 
    app.start(); 
} 
} 

无数次尝试后,我自己也使用在本网站的底部找到该代码:

http://slick.javaunlimited.net/viewtopic.php?t=3508

我的问题是:如何更改Slick中的默认字体,并将该字体中的文本绘制到我游戏的标题屏幕上。

回答

1

Slick-Util使用Java内置的Font支持来加载字体。您可以使用默认的内置java字体或加载外部ttf文件。

字体存储和绘制通过光滑的TrueTypeFont class

从ninjacave看到这个代码:

TrueTypeFont font; 
TrueTypeFont font2; 

public void init() { 
    // load a default java font 
    Font awtFont = new Font("Times New Roman", Font.BOLD, 24); 
    font = new TrueTypeFont(awtFont, false); 

    // load font from a .ttf file 
    try { 
     InputStream inputStream = ResourceLoader.getResourceAsStream("myfont.ttf"); 

     Font awtFont2 = Font.createFont(Font.TRUETYPE_FONT, inputStream); 
     awtFont2 = awtFont2.deriveFont(24f); // set font size 
     font2 = new TrueTypeFont(awtFont2, false); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

如需进一步详细看看这些网站:

http://ninjacave.com/slickutil1

+0

非常感谢!它运作良好,但我得到折旧警告。任何方式来避免这些? – GravityScore 2012-07-17 08:45:03

+0

那么,如果你在eclipse中编写代码,把你的鼠标指针放在不赞成使用的方法上,你会看到它的新选择......你也可以看看Java Doc的更多细节。 – 2012-07-17 15:42:43

+0

它说,替代方案是'UnicodeFont',这就是我试图使用它的原因,但是哦...当'TrueTypeFont'被删除时我会担心它:P – GravityScore 2012-07-19 10:52:09