nanshaws / LibgdxTutorial

libgdx 教程项目 本项目旨在提供完整的libgdx桌面教程,帮助开发者快速掌握libgdx游戏开发框架的使用。成功的将gdx-ai和ashley的tests从官网剥离出来,并成功运行。libgdx tutorial project This project aims to provide a complete libgdx desktop tutorial to help developers quickly master the use of libgdx game development framework. Successfully separated GDX-AI and Ashley's tests from the official website and ran them
29 stars 4 forks source link

关于中文字符的一些问题 #8

Open Monsterimpl opened 4 weeks ago

Monsterimpl commented 4 weeks ago

public class MyGdxGame extends ApplicationAdapter {

SpriteBatch batch;

//生产
FreeTypeFontGenerator generator;

//使用
FreeTypeFontGenerator.FreeTypeFontParameter parameter;

BitmapFont font;

@Override
public void create() {

    batch = new SpriteBatch();
    generator = new FreeTypeFontGenerator(Gdx.files.internal("ZiHunJianQiShouShu(ShangYongXuShouQuan)-2.ttf"));

    parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
    parameter.size = 25;
    parameter.characters = "我是你爹";

    font = generator.generateFont(parameter);

    font.setColor(Color.RED);

}

@Override
public void render() {

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();

    font.draw(batch, "我是你爹", 100, 100);

    batch.end();
}

@Override
public void dispose() {
    batch.dispose();
    generator.dispose();
    font.dispose();
}

} 其中font.draw(batch, "我是你爹", 100, 100);的我是你爹和 parameter.characters = "我是你爹";意义上有何不同public class MyGdxGame extends ApplicationAdapter {

SpriteBatch batch;

//生产
FreeTypeFontGenerator generator;

//使用
FreeTypeFontGenerator.FreeTypeFontParameter parameter;

BitmapFont font;

@Override
public void create() {

    batch = new SpriteBatch();
    generator = new FreeTypeFontGenerator(Gdx.files.internal("ZiHunJianQiShouShu(ShangYongXuShouQuan)-2.ttf"));

    parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
    parameter.size = 25;
    parameter.characters = "我是你爹";

    font = generator.generateFont(parameter);

    font.setColor(Color.RED);

}

@Override
public void render() {

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();

    font.draw(batch, "我是你爹", 100, 100);

    batch.end();
}

@Override
public void dispose() {
    batch.dispose();
    generator.dispose();
    font.dispose();
}

} 其中font.draw(batch, "我是你爹", 100, 100);的我是你爹和 parameter.characters = "我是你爹";意义上有何不同

Monsterimpl commented 4 weeks ago

给人一种很别扭的感觉我 font.draw(batch, "我是你爹", 100, 100);的时候,如果parameter.characters = "我是你爹";没有对应的字符就不行,同样ttf文件里面没有对应字符也不行!给我的感觉就是为什么不直接指定ttf里面的字符?有的parameter.characters = "我是你爹"很多余的感觉

Monsterimpl commented 4 weeks ago

不知道是不是我写的有问题

nanshaws commented 4 weeks ago

public class MyGdxGame extends ApplicationAdapter {

SpriteBatch batch;

//生产
FreeTypeFontGenerator generator;

//使用
FreeTypeFontGenerator.FreeTypeFontParameter parameter;

BitmapFont font;

@Override
public void create() {

    batch = new SpriteBatch();
    generator = new FreeTypeFontGenerator(Gdx.files.internal("ZiHunJianQiShouShu(ShangYongXuShouQuan)-2.ttf"));

    parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
    parameter.size = 25;
    parameter.characters = "我是你爹";

    font = generator.generateFont(parameter);

    font.setColor(Color.RED);

}

@Override
public void render() {

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();

    font.draw(batch, "我是你爹", 100, 100);

    batch.end();
}

@Override
public void dispose() {
    batch.dispose();
    generator.dispose();
    font.dispose();
}

} 其中font.draw(batch, "我是你爹", 100, 100);的我是你爹和 parameter.characters = "我是你爹";意义上有何不同public class MyGdxGame extends ApplicationAdapter {

SpriteBatch batch;

//生产
FreeTypeFontGenerator generator;

//使用
FreeTypeFontGenerator.FreeTypeFontParameter parameter;

BitmapFont font;

@Override
public void create() {

    batch = new SpriteBatch();
    generator = new FreeTypeFontGenerator(Gdx.files.internal("ZiHunJianQiShouShu(ShangYongXuShouQuan)-2.ttf"));

    parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
    parameter.size = 25;
    parameter.characters = "我是你爹";

    font = generator.generateFont(parameter);

    font.setColor(Color.RED);

}

@Override
public void render() {

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();

    font.draw(batch, "我是你爹", 100, 100);

    batch.end();
}

@Override
public void dispose() {
    batch.dispose();
    generator.dispose();
    font.dispose();
}

} 其中font.draw(batch, "我是你爹", 100, 100);的我是你爹和 parameter.characters = "我是你爹";意义上有何不同

parameter.characters = "我是你爹";:

  1. font.draw(batch, "我是你爹", 100, 100);:
    • 这一行代码实际是在屏幕上绘制文本 "我是你爹"。
    • font.draw() 方法使用生成的 BitmapFont 对象在指定的坐标位置 (100, 100) 绘制出字符串。
    • 这里的字符串是实际需要在应用程序界面上显示的内容。
ChinQingl commented 4 weeks ago

给人一种很别扭的感觉我 font.draw(batch, "我是你爹", 100, 100);的时候,如果parameter.characters = "我是你爹";没有对应的字符就不行,同样ttf文件里面没有对应字符也不行!给我的感觉就是为什么不直接指定ttf里面的字符?有的parameter.characters = "我是你爹"很多余的感觉

可以开启增量模式,开启后不需要指定初始化字符。还有另外一种方式是使用懒加载的BitmapFont