gpt4 book ai didi

java - 如何设置Actor子类的位置忽略draw方法中的位置

转载 作者:行者123 更新时间:2023-12-02 06:15:55 26 4
gpt4 key购买 nike

我有这门课:

public class MyActor extends Actor{
TextureRegion region;

public MyActor(TextureRegion region)
{
this.region = region;
}

@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.draw(region, 0, 0);
}

}

我在这里这样使用它:

public class MyGame implements ApplicationListener {

Stage stage;
MyActor myActor;

@Override
public void create() {
stage = new Stage(0, 0, false);
myActor = new MyActor(new TextureRegion(new Texture(
Gdx.files.internal("texture.png"))));

myActor.setPosition(200, 50);
stage.addActor(myActor);

}

@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
}

MyActor 类中,我将 actor 的位置设置为 (0, 0)。我只是将其用作某种默认设置,因为我希望能够在将其实际绘制在舞台上之前更改其位置。原因是我有一些 MyActor 对象,我想将它们全部绘制在舞台上但位于不同的位置。

所以我做了myActor.setPosition(200, 50);,但它不起作用。

我的问题:如何在舞台上绘制 myActor,其位置与 draw(Batch, float) 中设置的位置不同?

最佳答案

public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.draw(region, 0, 0);
}

删除此处的 super.draw 调用。现在它不应该做任何事情,如果它做任何事情,它可能会引起问题。

此外,你还提示说,你的 Actor 位置没有被利用。那是因为你没有使用它。

尝试这样的事情:

public void draw(Batch batch, float parentAlpha) {
batch.draw(region, getX(), getY());
}

关于java - 如何设置Actor子类的位置忽略draw方法中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com