簡體   English   中英

在標簽(演員)上設置文本會停止繪制

[英]Setting text on Label (Actor) stops drawing

我只是想不通,現在我正在拔頭發!!

我有一個添加了LabelStage ,我進行了所有設置,並且第一次調用Stage.draw()一切正常。 但是,一旦我設置了Label的文本,就什么也沒畫。 有趣的是,當我不更改文本時,它可以按預期完美地繪制,但是當我調用label.setText("THE TEXT")它就不會繪制。

我已經遍歷了代碼,並記下了設置Label文本之前和之后的heightwidthxy值,並且它們都是相同的(前后)。

另外,當我繪制Stage其繪制在Sprite上方,並根據Label的位置定位Sprite 我在Label上設置文字之前和之后, Sprite可以正常繪制。

PS:我還確保Sprite不在“ Label ”上繪制。

這是我的設置:

我有一個MainGame類,它渲染一個Player類,每當按下back按鈕時,就會繪制或繪制帶有StageSprite

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);

這就是我初始化LabelSpriteStage

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM