[英]Setting text on Label (Actor) stops drawing
我只是想不通,現在我正在拔頭發!!
我有一個添加了Label
的Stage
,我進行了所有設置,並且第一次調用Stage.draw()
一切正常。 但是,一旦我設置了Label
的文本,就什么也沒畫。 有趣的是,當我不更改文本時,它可以按預期完美地繪制,但是當我調用label.setText("THE TEXT")
它就不會繪制。
我已經遍歷了代碼,並記下了設置Label
文本之前和之后的height
, width
, x
和y
值,並且它們都是相同的(前后)。
另外,當我繪制Stage
其繪制在Sprite
上方,並根據Label
的位置定位Sprite
。 我在Label
上設置文字之前和之后, Sprite
可以正常繪制。
PS:我還確保Sprite
不在“ Label
”上繪制。
這是我的設置:
我有一個MainGame
類,它渲染一個Player
類,每當按下back
按鈕時,就會繪制或應繪制帶有Stage
的Sprite
。
spriteBatch.begin();
player.update(spriteBatch, delta);
spriteBatch.end();
// the pause menu is drawn with a separate sprite batch as it needs to be in middle relative to the screen and above everything else
if (player.isPaused()){
messageSpriteBatch.begin();
messageSprite.draw(messageSpriteBatch);
messageSpriteBatch.end();
messageStage.draw(); // the stage doesn't seem to be getting drawn
}
播放器類-更新方法
if (!paused){
// removed for clarity
}else{
// on MainGame class we render a small box with one of the following messages
// READY
// PAUSE
// QUIT?
// GAME OVER
if (Gdx.input.justTouched()){
paused = false;
}
spriteBatch.setProjectionMatrix(camera.combined);
camera.update();
}
messageSpriteBatch = new SpriteBatch();
messageStage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
messageFont = new BitmapFont(Gdx.files.internal("fonts/fontfile.fnt"));
messageStyle = new LabelStyle();
messageStyle.font = messageFont;
messageLabel = new Label("READY", messageStyle);
這就是我初始化Label
, Sprite
和Stage
:
float fontScaleX = Gdx.graphics.getWidth()/SCALE_X_DIVIDER;
float fontScaleY = Gdx.graphics.getHeight()/SCALE_Y_DIVIDER;
messageLabel.setFontScale(fontScaleX*1.4f, fontScaleY*4.2f);
messageLabel.setPosition((messageStage.getWidth()/2)-((messageLabel.getWidth()/2)*messageLabel.getFontScaleX()), (messageStage.getHeight()/2)-((messageLabel.getHeight()/2)*messageLabel.getFontScaleY())+(player.getScoreboard().getSize().y/2));
messageStage.addActor(messageLabel);
messageStage.act();
messageTexture = new Texture(Gdx.files.internal("images/message_background.png"));
messageSprite = new Sprite(messageTexture);
messageSprite.setSize((messageLabel.getWidth()*messageLabel.getFontScaleX())*1.5f, (messageLabel.getHeight()*messageLabel.getFontScaleY())*3);
messageSprite.setPosition(messageLabel.getX()-(messageSprite.getWidth()/6), messageLabel.getY()-messageSprite.getHeight()/2);
在我獲得禿頭xD之前,請幫助我
好吧,標簽的寬度和高度通常在創建標簽時設置一次,與傳遞給構造函數的初始文本的寬度和高度匹配。 您當然可以通過稍后設置寬度和高度來使其更大。 然后您也可以順便使用對齊方式...
更改文本時是否使用任何特殊字符,所以字體有問題嗎?
也許發布一些代碼可以提供更多的見解...
哈哈,好吧,我發現了問題所在,這是我的字體文件,您看到我在編輯它時,使用了文本READY ,所以當我保存它時,我不知道所寫的文本是保存的內容,所以當我查看font.png文件時,我發現它僅包含字母ADERY 。
仍然感謝您的幫助=]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.