Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 如何扩展演员并在舞台上绘制?Libgdx_Java_Libgdx - Fatal编程技术网

Java 如何扩展演员并在舞台上绘制?Libgdx

Java 如何扩展演员并在舞台上绘制?Libgdx,java,libgdx,Java,Libgdx,我试图创建一个扩展Actor类的对象。但是每当我调用Stage的draw()方法时,它只会绘制我添加到其中的按钮。这是我的密码,也许有人能帮我 Screen类的代码(假设我已经重写了所有必要的方法并导入了所有必要的类): 公共类PlayScreen实现屏幕{ SpriteBatch batch; Game game; Table table; Skin skin; Stage stage; BitmapFont font; TextButton button; TextDisplay displ

我试图创建一个扩展Actor类的对象。但是每当我调用Stage的draw()方法时,它只会绘制我添加到其中的按钮。这是我的密码,也许有人能帮我

Screen类的代码(假设我已经重写了所有必要的方法并导入了所有必要的类): 公共类PlayScreen实现屏幕{

SpriteBatch batch;
Game game;
Table table;
Skin skin;
Stage stage;
BitmapFont font;
TextButton button;
TextDisplay display;


public PlayScreen(MyGdxGame game, SpriteBatch batch){

    this.game = game;
    this.batch = batch;

    //instantiating Stage, Table, BitmapFont, and Skin objects.
    font = new BitmapFont(Gdx.files.internal("MyTruefont.fnt"));
    table = new Table();
    stage = new Stage();
    skin = new Skin(Gdx.files.internal("Test.json"));


    button = new TextButton("Start!", skin, "default");
    display = new TextDisplay(font, this);

    //Setting table properties
    table.setWidth(stage.getWidth());
    table.align(Align.center|Align.top);
    table.setPosition(0, Gdx.graphics.getHeight());
    table.padTop(30);

    //Adding actors to table
    table.add(button).padBottom(50);
    table.add(display);

    //Adding table to stage and setting stage as the input processor
    stage.addActor(table);
    Gdx.input.setInputProcessor(stage);
}



@Override
public void show() {

}

@Override
public void render(float delta) {

    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    stage.draw();
    batch.end();
}
下面是我的Textdisplay类,它扩展了Actor(再次假设所有其他方法都已被重写,并且所有必要的类都已导入):


您覆盖了错误的
draw
方法。参与者的draw方法签名为:

public void draw (Batch batch, float parentAlpha)
您覆盖了Drawable中的一个。不确定为什么要实现Drawable。已经有一个角色可用于绘制文本,名为Label


此外,如果要将参与者放入表中,则需要设置其宽度和高度,或其单元格在表中的宽度和高度。

您覆盖了错误的
draw
方法。参与者的draw方法签名为:

public void draw (Batch batch, float parentAlpha)
您覆盖了Drawable中的一个。不确定为什么要实现Drawable。已经有一个角色可用于绘制文本,名为Label


另外,如果要将演员放在表格中,则需要设置其宽度和高度,或表格中单元格的宽度和高度。

哦,好的,谢谢。我实现了drawable,以查看它是否可以解决问题。我想我可以解决这个问题。我是否仍然能够绘制假定代表我的演员的图像?或者缺少什么?此外,Label类并不能满足我的要求。您可以在
draw
方法中绘制任何需要的内容。因此,我是否可以在actor's draw方法中调用纹理的draw方法?在actor's draw方法中,调用batch.draw(纹理…)或font.draw(批次…)哦,好的,谢谢。我实现了drawable,看看它是否能解决问题。我想我可以解决这个问题。我还能画出应该代表我的演员的图像吗?或者我遗漏了什么吗?而且Label类并不是我想要的。你可以在
draw
方法中画任何你想要的东西。所以我会调用纹理的演员绘图方法中的绘图方法?在演员绘图方法中,调用batch.draw(纹理…)或font.draw(批次…)