无法将演员添加到舞台上

时间:2015-06-28 23:22:37

标签: eclipse libgdx

我有主要课程(它只是本课程的一小部分):

        ScreenViewport viewport = new ScreenViewport();
    stage = new Stage(viewport);
    Gdx.input.setInputProcessor(stage);

    MyActor actor = new MyActor();
    stage.addActor(actor);

和MyActro类:

package com.mygdx.game;

import com.badlogic.gdx.scenes.scene2d.Actor;

公共类MyActor扩展了Actor {

private Actor actor;

public MyActor(Actor actor)
{
    this.actor = actor;
}


public Actor getActor()
{
    return actor;
}

}

Eclipse建议我应该从构造函数中删除参数。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您需要新建Actor类以传递给构造函数。

    static void Main(string[] args)
    {
        Stage stage = new Stage();

        Actor actor = new Actor();
        MyActor myActor = new MyActor(actor);
        stage.AddActor(actor);
    }

答案 1 :(得分:0)

您显然正在尝试创建一个没有传入Actor的MyActor:

MyActor actor = new MyActor();

而你只有一个MyActor的构造函数,它接受一个Actor:

public MyActor(Actor actor)

当你说MyActor扩展了Actor时,你真的是说它继承了它吗?如果是这种情况,也许您不应该尝试将Actor封装在MyActor中。也许这就是你想要做的,但只是给它一点思考。

答案 2 :(得分:0)

我终于可以在舞台上绘制纹理了。 有没有办法在舞台上绘制纹理,但使用的方式与我通常使用的方式不同:Link

在我开始在LibGdx中使用stage之前,我绘制了这样的纹理:

public class MyGdxGame extends ApplicationAdapter {

private SpriteBatch batch;
private Texture texture2;

@Override
public void create () {

    texture2 = new Texture("trojkat.png");
    batch = new SpriteBatch();

}

@Override
public void render () {
    Gdx.gl.glClearColor(144, 96, 48, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.begin();

    batch.draw(texture2,1,1);

    batch.end();
}

@Override
public void dispose() {

    texture2.dispose();
}

}

但在本教程中,它的构建方式不同。我想在主要课程中绘制所有内容,但不知道该怎么做。上面的代码已经工作了,在MyActor类我添加了一个绘图函数,它现在看起来像这样:

public class MyActor extends Actor

{

private Actor actor;
Texture texture = new Texture(Gdx.files.internal("trojkat.png"));
public void draw(Batch batch, float alpha)
{
    batch.draw(texture,0,0);
}



public MyActor(Actor actor)
{
    this.actor = actor;
}



public Actor getActor()
{
    return actor;
}

}

当我使用舞台时,是否可以在主类中绘制所有内容?