web-dev-qa-db-ja.com

libgdxscene2dにアクターをドラッグアンドドロップする方法は?

LibGDXを使用してゲームを開発していますが、アクターをドラッグアンドドロップする方法を知りたいです。ステージを作って俳優を描いたのですが、そのイベントをトリガーする方法がわかりません。

私自身のアーキテクチャを使用するのを手伝ってください。

public class MyGame implements ApplicationListener 
{
    Stage stage;
    Texture texture;
    Image actor;

    @Override
    public void create() 
    {       
        texture = new Texture(Gdx.files.internal("actor.png"));
        Gdx.input.setInputProcessor(stage);
        stage = new Stage(512f,512f,true);

        actor = new Image(texture);
        stage.addActor(actor);
    }

    @Override
    public void render() 
    {       
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        stage.draw();
    }
}
12
Juan Mitchell

Libgdxの例の例を見てください。 libgdxテストクラスからのドラッグアンドドロップテストは次のとおりです。 DragAndDropTest

アクターをドラッグ/スライドするだけの場合は、GestureListenerを追加して、次のようにステージを入力プロセッサに渡す必要があります:Gdx.input.setInputProcessor(stage);。これが GestureDetectorTest libgdxからです。ドラッグイベントの場合、そのFlinglistener。

11
BennX

DragAndDropクラスを使用したくない場合は、次を使用できます。

actor.addListener(new DragListener() {
    public void drag(InputEvent event, float x, float y, int pointer) {
        actor.moveBy(x - actor.getWidth() / 2, y - actor.getHeight() / 2);
    }
});

編集:メソッドdrag代わりにtouchDragged

10
pablo2303

メインのゲーム画面クラスにマルチプレクサを追加して、さまざまなクラスのイベントにアクセスできるようにします。

private InputMultiplexer inputMultiplexer = new InputMultiplexer(this); 

ゲーム画面コンストラクターの後に、例として追加します。

inputMultiplexer = new InputMultiplexer(this);      
inputMultiplexer.addProcessor(1, renderer3d.controller3d);  
inputMultiplexer.addProcessor(2, renderer.controller2d);
inputMultiplexer.addProcessor(3, renderer3d.stage);
Gdx.input.setInputProcessor(inputMultiplexer);

アクターを使用しているクラスでは、次の例としてDragListenerを使用します。

Actor.addListener((new DragListener() {
    public void touchDragged (InputEvent event, float x, float y, int pointer) {
            // example code below for Origin and position
            Actor.setOrigin(Gdx.input.getX(), Gdx.input.getY());
            Actor.setPosition(x, y);
            System.out.println("touchdragged" + x + ", " + y);

        }

    }));
2
GothicFan