簡體   English   中英

LibGDX Scene2D:將動作應用於單獨類中的Actor

[英]LibGDX Scene2D: Applying Actions to Actors in separate class

當Actor在單獨的類中時,我無法讓MoveToAction在Actor(menuBackground)上工作。 我在下面附加了相關代碼-根本不會使Actor行動。

我已經成功地將其他操作應用於MainMenuScreen類的根階段以及MainMenuScreen類中的其他Actor(按鈕),但是沒有成功將操作應用於單獨的類中的Actor。

我試過將MoveToAction放在MenuBackground類的act(float delta)方法中,但是那也不起作用。 都沒有從MainMenuScreen類中將MoveToAction分配給menuBackground。

請注意,我正在調用super.act(delta);。 在我的MenuBackground類中。

我最終希望將MoveToAction的代碼放在Actor MenuBackground類中,以使事情整潔。

干杯。

類包含階段:

public class MainMenuScreen implements Screen
{
     private Stage stage;
     public MainMenuScreen()
     {
         stage = new Stage(new FitViewport(800, 480));
         Gdx.input.setInputProcessor(stage);

         menuBackground = new MenuBackground();
         MoveToAction moveToAction = new MoveToAction();
         moveToAction.setPosition(242f, 276f);
         moveToAction.setDuration(10f);
         menuBackground.addAction(moveToAction);
         stage.addActor(menuBackground);

    @Override
    public void render(float delta) 
    {
        Gdx.gl.glClearColor(0, 0, 0, 0);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);    
        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();
    }
...
}

演員班:

public class MenuBackground extends Actor
{
    private Texture menuBackgroundTexture;
    private float actorX;
    private float actorY;

    public MenuBackground()
    {
        menuBackgroundTexture = new Texture(Gdx.files.internal("data/menuTitleTexture.png")); 
        actorX = 242f;
        actorY = 350f;
        setBounds(actorX,actorY,316,128);   
    }

    @Override
    public void draw(Batch batch, float alpha)
    {
        batch.draw(menuBackgroundTexture,actorX,actorY);
    }

    @Override    
    public void act(float delta)
    {
        super.act(delta);    
    }
...
}

問題出在您的draw()方法內部。

看一下代碼繪制紋理,它使用actorXactorY ,它們實際上是不會更改其值的字段。

正確的方法是:

batch.draw(menuBackgroundTexture, getX(), getY(), getWidth(), getHeight());

因此,您應該使用actor自己的字段和getter,而不要管理自己的字段和getter。

暫無
暫無

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

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