簡體   English   中英

如何設置Actor子類的位置忽略draw方法中的位置

[英]How to set the position of Actor subclass ignoring the position in draw method

我有這門課:

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調用。 現在它不應該做任何事情,如果它會做任何事情,它可能會導致問題。

此外,你抱怨說你的演員職位沒有被使用。 那是因為你沒有使用它。

嘗試這樣的事情:

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

您可以擴展Image ,而不是擴展Actor ,它是Actor的子類。 Image allready擁有一個Drawable (你可以在TextureRegion的構造函數中使用你的TextureRegionDrawable )。 然后在你的Image -subclass中你可以覆蓋draw(Batch batch, float parentAlpha) ,必要時做一些控制並調用suoer.draw(batch, parentAlpha)然后你的Actor將被繪制在正確的positionrotationscale .. 。

編輯: ImageWidget的子類。 Widget本身擴展了Actor 來自LibGDX Api:

在窗口小部件邊界內以各種方式顯示Drawable。 優選的尺寸是可拉伸的最小尺寸。 僅在使用TextureRegionDrawable時,才會在繪制時使用actor的縮放,旋轉和原點。

因此,如果您使用TextureRegionDrawable,它還將處理您為Actor設置的旋轉,縮放和原點Actor如果需要)。 它擁有Actor類具有的所有內容和MORE

另一個編輯:正如你所說,你必須存儲其他數據,你可以讓你的MyActor extends Image MyActor您可以存儲所需的所有數據,但不再需要存儲圖像,也不必再關注繪圖了。 所以這只是一個建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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