我設法從.txt創建文本,現在我有一個BitmapFont對象。我想用它作爲演員。在演員的方法畫()我用:用於作爲演員的BitmapFont的InputListener在LibGDX中不起作用
FontRed.draw(batch, "Some text!", getX(), getY());
顯示文本,但聽衆沒有工作。當我試圖從BitmapFont拍攝一個區域時: batch.draw(FontRed.getRegion(), getX(), getY(), getWidth(), getHeight());
我在屏幕上看到了很多奇怪的符號,而不是我的文字,但我的偵聽器工作。
我認爲它與該事實密切相關,spritebatch是在BitmapFont的方法draw()中發送的。這是我的全碼:
public class Text extends Actor {
private BitmapFont FontRed;
private FreeTypeFontGenerator generator;
FreeTypeFontParameter parameter;
String FONT_CHARS = "";
public Text(GameStateManager gsm){
generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/myfont.ttf"));
for(int i = 32; i < 127; i++) FONT_CHARS += (char)i;
for(int i = 1024; i < 1104; i++) FONT_CHARS += (char)i;
parameter = new FreeTypeFontParameter();
parameter.characters = FONT_CHARS;
parameter.size = 82;
parameter.color= Color.RED;
FontRed = generator.generateFont(parameter);
generator.dispose();
setPosition(30, 300);
setSize(182, 182);
this.addListener(new Listener(gsm));
}
@Override
public void draw(Batch batch, float parentAlpha) {
FontRed.draw(batch, "Some text!", getX(), getY());
// batch.draw(FontRed.getRegion(), getX(), getY(), getWidth(), getHeight());
}
@Override
public void act(float delta) {
}
class Listener extends InputListener {
GameStateManager gsm;
Listener(GameStateManager gsm){
this.gsm = gsm;
}
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
event.getListenerActor().setColor(Color.GREEN);
System.out.println("it works");
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
gsm.push(new PlayState(gsm));
}
}
}
所以,請給我解釋一下爲什麼演員讀心人時spritebatch在BitmapFont的方法來繪製發送(不工作),我怎麼可以從BitmapFont紋理在batch.draw()中使用它?
演員的繪製方式完全獨立於任何聽衆,因此必須有其他事情正在進行。你如何確定聽衆是否在工作?現在你已經設置了演員的顏色,但是在繪製時你沒有使用演員的顏色,所以不可見。你是否說只有在繪製字體區域時纔會出現「它有效」日誌?他們沒有關係。 – Tenfour04
@ Tenfour04,設置演員的顏色並不重要,我忘了刪除它。我的意思是'System.out.println(「它工作」);'當我畫'FontRed.draw(批處理,「一些文本!「getX(),getY());'但是當我繪製'batch.draw(),我的文本,但聽衆的作品,你說他們沒有關係,但該怎麼辦?請幫助我。 –
再次檢查。你會看到,如果你看看你所描述的舞臺和演員的源代碼是不可能的,你必須做一些其他的改變 – Tenfour04