Java 设置标签上的文字(Actor)将停止绘图
我就是想不出来,我现在正在拔头发 我有一个Java 设置标签上的文字(Actor)将停止绘图,java,android,eclipse,libgdx,Java,Android,Eclipse,Libgdx,我就是想不出来,我现在正在拔头发 我有一个Stage并添加了一个标签,我设置了一切,第一次调用Stage.draw()一切正常。但是,只要我设置标签的文本就不会绘制任何内容。有趣的是,当我没有按预期更改文本时,它会完美地绘制,但当我调用label.setText(“文本”)时,它就不会绘制 我已经通过我的代码,我记下了设置标签文本前后的高度、宽度、x和y值,它们都是相同的(前后) 另外,当我绘制阶段时,它被绘制在精灵上方,而精灵的定位是基于标签的位置。 Sprite在我设置标签上的文本之前和之后
Stage
并添加了一个标签,我设置了一切,第一次调用Stage.draw()
一切正常。但是,只要我设置标签的文本
就不会绘制任何内容。有趣的是,当我没有按预期更改文本时,它会完美地绘制,但当我调用label.setText(“文本”)
时,它就不会绘制
我已经通过我的代码,我记下了设置标签
文本前后的高度
、宽度
、x
和y
值,它们都是相同的(前后)
另外,当我绘制阶段
时,它被绘制在精灵
上方,而精灵
的定位是基于标签
的位置。
Sprite
在我设置标签上的文本之前和之后绘制得很好
注:我还确保了精灵
不会“覆盖”标签
这是我的设置:
我有一个MainGame
类,它呈现一个Player
类,当按下back
按钮时,Sprite
与Stage
一起绘制,或者应该绘制
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);
这就是我如何初始化我的标签
,精灵
和阶段
:
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
无论如何,感谢您的帮助=]我唯一使用的“特殊”字符是问号(?),但是,我尝试设置为不同的文本,但运气不佳。另外,请看我的编辑。