Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置标签上的文字(Actor)将停止绘图_Java_Android_Eclipse_Libgdx - Fatal编程技术网

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

无论如何,感谢您的帮助=]

我唯一使用的“特殊”字符是问号(?),但是,我尝试设置为不同的文本,但运气不佳。另外,请看我的编辑。