libGDX의 기본 7 이벤트

libGDX는 Windows, Linux, Mac, 안드로이드, 아이폰, HTML에 대응하는 크로스플랫폼 게임 라이브러리다.유명한 Ingress에서도 사용됩니다.유럽과 미국은 비교적 주류적인 곳이다.

입력 이벤트는


터치, 클릭, 키보드 등의 입력에 따라 호출되는 구조다.이렇게 쓰는 것은 어려울 것 같지만 구조는 매우 간단하다.
Scene 2D에서 다양한 액터에서 이벤트 청취자를 설정할 수 있습니다.마침 겹치는 부분도 우선도가 높아서 액터는 그 활동을 받아들인다.

이벤트 등록에 사용되는 방법은 단 하나


이벤트를 등록하는 방법은 Actor#addListener()뿐입니다.
이미 몇 개의 이벤트 청중을 준비했지만, 여기서 가장 간단한 클릭 이벤트를 실시해 보자.

출처


package test.libgdx;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;

public class MainListener7 implements ApplicationListener{

    TextureAtlas atlas;
    Stage stage;

    @Override
    public void create() {

        FileHandle fh = Gdx.files.internal("atlas/data.txt");
        atlas = new TextureAtlas(fh);

        stage = new Stage();
        Gdx.input.setInputProcessor(stage);//ここがポイント1

        {   
            TextureAtlas.AtlasRegion region = atlas.findRegion("001");
            Image image = new Image(region);
            image.setPosition(0, 0);

            ClickListener listener = new ClickListener(){//ここがポイント2

                @Override
                public void clicked(InputEvent event, float x, float y) {
                    System.out.println("001がクリックされた!");
                }

            };
            image.addListener(listener);//ここがポイント3


            stage.addActor(image);
        }

        {   
            TextureAtlas.AtlasRegion region = atlas.findRegion("002");
            Image image = new Image(region);
            image.setPosition(50, 50);

            ClickListener listener = new ClickListener(){

                @Override
                public void clicked(InputEvent event, float x, float y) {
                    System.out.println("002がクリックされた!");
                }

            };
            image.addListener(listener);

            stage.addActor(image);
        }


    }

    @Override
    public void resize(int w, int h) {
    }

    @Override
    public void render() {

        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        Gdx.gl.glClearColor(0, 0, 0, 1);


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

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }

    @Override
    public void dispose() {
    }

    //起動部分
    public static void main(String[] args) {
        new LwjglApplication(new MainListener7());
    }
}

간단하게 설명하자면, 리뷰의'Point 1'부분 선언은 각종 입력 이벤트를 Scene 2D로 처리한다.이곳이 없었다면 행사가 벌어져도 행사 청취자들에게 제대로 날아갈 수 없었을 것이다.
'포인트 2'로 청중을 만든다.이러한 내부 클래스는 GUI 클래스에서 자주 사용됩니다.
시 3에 Actor에 청취자를 등록합니다.이번에는 Image이지만, Image 이외의 액터도 가능합니다.

실행!



클릭하거나 만질 때 겹치는 부분은 위의 그림을 우선선택합니다(002).
공백이 어디로 갔는지 미묘하게 알기 어려웠기 때문이다.활동 범위가 어디까지인지 알 수 없는 Actor 크기입니다.

클릭 판단 간단


따라서 각 Image 인스턴스의 초기화에 다음 행을 추가합니다.포지션 설정 뒤에 놓으세요.

image.setDebug(true);
또한 이 기능을 사용하려면 버전이 비교적 새것이어야 하기 때문에 구버전을 사용하는 사람은 버전을 높여 주십시오.
Gradle을 사용할 때 버전을 1.4.1로 설정하지 않으면 다음과 같은 측면에서 얻을 수 있습니다.바꿔.
http://libgdx.badlogicgames.com/releases/
실행 후 아래와 같다.

이러면 판정 좋은데.겹치는 부분은 윗사람이 먼저 클릭하도록 한다.

여기에 회전과 확대, 축소를 더하다


회전하고 확대해서 축소하면 어떻게 되나요?다음 코드만 002 이미지에 추가한 다음 실행합니다.

image.setRotation(-45);
image.setScale(0.75f);

분계선을 중점적으로 클릭하세요.잘 회전하면 확대, 축소된 사이즈로 계산된다는 것을 알 수 있다.
키보드를 사용하려면 InputListener를 Stage로 설정하고 키업과 키다운을 이용한 활동이 좋다.
이전 글에서 그림을 그리고 터치하는 이벤트를 실행합니다.모험과 RPG는 이미 할 수 있어.

좋은 웹페이지 즐겨찾기