2012-03-18 5 views
2

Im libgdx 테스트 중이지만 사용자 입력 처리에 문제가 있습니다.libgdx - 액터 입력 이벤트가 실행되지 않습니다.

첫 번째 시도는 렌더링 메소드에서 직접 Gdx.input을 사용했지만 터치 이벤트가 발생했을 때 입력 영역을 감지하기 위해 많은 코드를 작성하고있는 것처럼 휠 원인을 재발 명하고 싶습니다.

저는 Actor 클래스를 사용하는 것이 더 나은 방법이라고 확신합니다. 그러나 이벤트가 결코 실행되지 않기 때문에 나는 틀린 일을해야합니다. 잘

... 
    Texture texture = new Texture(Gdx.files.internal("assets/sprite-sheet.png")); 
      singlePlayerButton = new Image("SinglePlayerButton", new TextureRegion(texture,0,0,50,50)){ 

       @Override 
       public boolean touchDown(float x, float y, int pointer) { 
        // TODO Auto-generated method stub 
        System.out.println("touch down"); 
        return super.touchDown(x, y, pointer); 
       } 

       @Override 
       public void touchUp(float x, float y, int pointer) { 
        System.out.println("touch up");    
       } 

      }; 

      stage.addActor(singlePlayerButton); 
... 

public void render(float delta) { 
     // Clear the screen 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);   
     stage.draw(); 
     spriteBatch.end(); 
    } 

이미지를 표시하지만 내가 결코 이벤트가 발생하지 얻을 그것을 클릭 몇 번 문제가되지 않습니다

여기 내 코드입니다. 나는 무엇을 놓치고 있습니까? 이벤트 등록? Stage 또는 Actor 클래스에서 addTouchListener() 메서드를 찾을 수 없습니다.

감사합니다.

답변

16

모든 입력 프로세서를 libGDX에 등록해야합니다. 스테이지 InputProcessor를 구현, 그래서 당신이 그것을 등록해야 :

@Override 
public void create() { 
    //... initialization 

    Gdx.input.setInputProcessor(stage); 
} 
+0

감사 형제를, 그것은 바보 같은 질문은했지만이 게임 엔진 스틸이 엔진에 대한 비평가, 내가 생각 정직 할 수없는 (좋은 문서에서 부족 그것은 굉장한 프로젝트 다). 이 입력 프로 세서를 언제든지 다른 단계로 재정의 할 수 있습니까? – rsan

+2

이것을 위해 InputMultiplexer를 사용할 수 있습니다. InputProcessor를 필요에 따라 멀티플렉서에 추가/제거 할 수 있습니다. 또는 필요할 때 다른 InputProcessor를 설정하십시오. – Ludevik

+0

Tnx, 완벽한 작품 :) – rsan

관련 문제