Как создать группы в libGdx?

8

Может ли кто-нибудь из вас продемонстрировать простой пример использования групп в libGdx? так что, если я переместлю родителя, то все дети будут двигаться вместе с ним, и то же самое произойдет с вращением и масштабированием.

Я искал учебники и примеры в Интернете, но, похоже, последняя версия libGdx внесла некоторые изменения в класс Stage.

Спасибо

alaslipknot
источник
Использование stage2d или создание с нуля?
Густаво Масиэль
используя stage2d я думаю: р? это лучший способ, верно?
alaslipknot
Лучше субъективно, для меня, сделать это с нуля лучше (потому что у меня есть много контроля над этим), для других, stage2D может быть лучше, так что им не нужно слишком много беспокоиться, или они могут интегрироваться с другими Особенности Stage2D.
Густаво Масиэль
Во всяком случае, я не знаю, как сделать это с Stage2D: P
Gustavo Maciel
LOL нет проблем, я нашел решение сейчас ^^ Thnx в любом случае: D
alaslipknot

Ответы:

5

Вот именно то, что мне нужно было, этот класс позволяет создавать 3 изображения и вращать их, так как они являются одним объектом, спасибо всем за ваш вклад.

public class LearnGdx extends ApplicationAdapter {

    public static final int WIDTH = 800;
    public static final int HEIGHT = 480;

    private Stage stage;
    private Group group;

    private float rotSpeed = 5;

    @Override
    public void create() {

        // Create a stage
        stage = new Stage(new StretchViewport(WIDTH, HEIGHT));

        // Create a group and add it to the stage.
        group = new Group();
        stage.addActor(group);

        // Create images and add them to the group.
        final Texture region = new Texture(Gdx.files.internal("circle.png"));
        Image img = new Image(region);
        Image img2 = new Image(region);
        Image img3 = new Image(region);

        img2.setColor(new Color(1, 0, 0, 1));
        img3.setColor(new Color(0, 0, 1, 1));

        group.addActor(img2);
        group.addActor(img3);
        group.addActor(img);

        // Images are positioned relative to the group...
        img.setPosition(0, 0);
        img2.setPosition(img.getWidth()/2, 0);
        img3.setPosition(-img.getWidth()/2, 0);

        // Group is positioned relative to the stage...
        group.setPosition(WIDTH / 2 - img.getWidth() / 2,
            HEIGHT / 2 - img.getHeight() / 2);
        group.setOrigin(img.getWidth()/2,img.getHeight()/2);

    }

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

        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();

        if (Gdx.input.isKeyPressed(Keys.LEFT)) {
            group.rotateBy(rotSpeed);
        }
        if (Gdx.input.isKeyPressed(Keys.RIGHT)) {
            group.rotateBy(-rotSpeed);
        }
    }
}
alaslipknot
источник