2014-07-16 6 views
3

InputListener에서 exit() 메서드를 사용하여 커서가 버튼 안에 있는지 확인하고 싶습니다.Libgdx InputListener TextButton에서 "exit()"를 호출하지 않습니다.

다음은 libGDX 문서에 대한 설명입니다. 마우스 커서 또는 손가락 접촉 언제 호출

public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) 

은 액터로부터 이동된다.

그러나 단추에 커서를 놓은 다음 단추 외부로 이동하면 메서드가 호출되지 않습니다. System.out.println("exited");으로 테스트 중이며 콘솔에 아무것도 표시되지 않습니다.

편집 :

LibGDX 버전 : 최신 안정 나이틀리

InputListener 구현 :

//This button class is a custom class to make button creation easier. This is the constructor. 
public Button(Vector2 position, String packLocation, String text, Stage stage, BitmapFont font, Color color) { 

//Removed buttonStyle creation etc. to shorten the code. 
    button = new TextButton(text, buttonStyle); 
    button.setPosition(position.x, position.y); 
    stage.addActor(button); 
    Gdx.input.setInputProcessor(stage); 
    pressed = false; 

    button.addListener(new ClickListener() { 

     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
      pressed = true; 
      return true; 
     } 

     @Override 
     public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
      pressed = false; 
     } 

     @Override 
     public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) { 
      System.out.println("exited"); 
     } 
    }); 
} 

편집 :

buttonStyle.over = skin.getDrawable("over");

을하지만 클릭을 수행합니다 내가 그렇게 좋아하도록 설정으로 버튼을 통해유혹은 또한 버튼의 질감을 변경하지 않습니다.

+0

exit 메서드가 제대로 작동합니다. 어떤 libgdx 버전을 사용합니까? 버튼에 리스너를 추가하는 위치 및 방법 관련 코드를 추가하십시오. – donfuxx

+0

@donfuxx 편집을 마쳤습니까? ** 참고 : ** touchUp 및 touchDown이 작동 중입니다. 출구가 없습니다. – Sierox

+0

내 버튼 중 일부에 청취자를 복사하여 붙여 넣은 것처럼 좋았습니다. libgdx의 Desktop 프로젝트에서 이것을 테스트하고 있습니까? Android에는 마우스 커서가 없습니다. – donfuxx

답변

5

몇 시간 동안 검색 한 후 마침내 빠진 것을 발견했습니다. 렌더 메소드에서 stage.act();을 호출해야했습니다. 이 두 가지 기능은 버튼 위로 마우스를 가져 가면 텍스처 변경 기능을 제공하고 InputListener의 enter/exit 메서드도 제공합니다.

+1

많은 시간, 감사합니다! – DKIT

+1

다행 누군가 도움이 :) – Sierox

관련 문제