gpt4 book ai didi

java - 自定义、可点击字体

转载 作者:行者123 更新时间:2023-12-01 12:02:18 25 4
gpt4 key购买 nike

我正在尝试为我的游戏制作一个自定义的、可点击的字体(对于菜单,例如:游戏 -> 进入游戏屏幕),我尝试过使用 FreeType,但是当我用它制作新文本时,它使用安卓上有很多内存。您能建议我一种从 .ttf 文件创建可点击文本的正确方法吗?我是这样做的:

我有一个 Box 类:

public class Box {

protected float x;
protected float y;
protected float width;
protected float height;

public boolean contains(float x, float y) {
return x > this.x - width / 2 &&
x < this.x + width / 2 &&
y > this.y - height / 2 &&
y < this.y + height / 2;
}
}

然后 Texts 类及其扩展了框,因此当我创建新文本时,我可以调用 .contains(x,y) 这样我就可以使文本可点击:

public class Texts  extends Box{

private String text;
private int size;
private float density;
private int dpSize;
private BitmapFont font;
private FreeTypeFontGenerator generator;
private FreeTypeFontParameter parameter;

public Texts(String text, int size, float x ,float y){
this.text = text;
this.size = size;

generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
parameter = new FreeTypeFontParameter();


parameter.size = size;
dpSize = parameter.size;

font = generator.generateFont(parameter);
generator.dispose();

this.x = x;
this.y = y;
this.width = font.getBounds(text).width;
this.height = font.getBounds(text).height;

}

public void render(SpriteBatch sb){

font.draw(sb, text, x - width / 2 , y + height /2);


}

public void renderNoCenter(SpriteBatch sb){

font.draw(sb, text, x , y);

}

public float getWidth(){
return this.width;
}

public float getHeight(){
return this.height;
}

public void setText(String text){
this.text = text;
}

public void setXY(float x, float y){
this.x = x;
this.y = y;
}

public void update(float dt){

}

public int getDpSize(){
return dpSize;
}

public void dispose(){
font.dispose();
}

}

但是当我创建这样的新文本时,应用程序消耗 + 12mb RAM/文本:

Texts play = new Texts("PLAY", 200, 200, 80);
Texts options= new Texts("OPTIONS", 200, 200, 20);

这就是我的问题,感谢您的帮助!

最佳答案

生成 200 像素的字体将会用相当大的位图字体字形页面填满您的视频内存。如果您使用许多不同的字体类型和/或比例(或仅一种大比例字体),您可能需要考虑实现距离场字体。看看这个答案:How to draw smooth text in libgdx?

另一种选择是创建图像并使用 Scene2d ImageButton 而不是可点击的文本。

关于java - 自定义、可点击字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com