2013-05-30 5 views
3

libgdx를 배우기 시작하고 scene2d로 시작하지만 스플래시 화면에 문제가 있습니다. 내 페이드 액션은 완벽하게 작동하지만 이미지가 스케일되지 않습니다. (심지어 생성자에 스케일링을 추가 할 때도 마찬가지입니다 ...)Scene2d 이미지의 크기가 조정되지 않습니다.

실제 이미지가 512x256 인 png 512x512에서로드 된 텍스처 스플래시 텍스처가 있습니다. 그래서 저는 TextureRegion을 만듭니다.

@Override 
public void resize(int width, int height) { 
    stage.clear(); 
    Drawable splashTextureDrawable = new TextureRegionDrawable(
      splashTextureRegion); 

    Image splashImg = new Image(splashTextureDrawable); 

    splashImg.getColor().a = 0f; 
    splashImg.addAction(Actions.sequence(Actions.fadeIn(0.5f), 
      Actions.delay(2f), Actions.fadeOut(0.5f))); 

    stage.addActor(splashImg); 

} 

이 실제로 가지고있는 (AN AbstractScreen 클래스를 확장하는 클래스로 SplashScreen의 함수이다 :이 모든 내 쇼 방식으로 이루어집니다 : 내 크기 조정 방법에 다음

@Override 
    public void show() { 
    super.show(); //sets inputprocessor to stage 

    splashTexture = new Texture(SPLASHADR); 

    // set the linear texture filter to improve the stretching 
    splashTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 
    splashTextureRegion = new TextureRegion(splashTexture, 0, 0, 512, 256); 

} 

그런 온다 렌더링 함수) :

@Override 
public void render(float delta) { 
    stage.act(delta); 

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

    stage.draw(); 
} 

어떤 아이디어라도 환영합니다. 저는 몇 달 동안 javadocs를보고 있었지만 아직 해결책을 찾지 못했습니다!

bnunamak

답변

5

체크 아웃 stage.setViewport(float width, float height, boolean keepAspectRatio), 감사합니다.

:

stage.setViewport(512, 256, false); 

keepAspectRatio 매개 변수에 대한 설명은 scene2d wiki article를 참조하십시오 : 당신은 이미지가 화면을 채우기 때문에 이미지의 너비/높이로 무대의 뷰포트 너비/높이를 설정하려는 것 같은데

setViewport에는 스테이지 크기와 뷰포트 크기의 종횡비가 다른 경우에만 효과가있는 keepAspectRatio라는 매개 변수가 있습니다. 이 거짓이면 스테이지가 뷰포트를 채우도록 늘려서 가로 세로 비율이 일 수 있습니다. true이면 스테이지가 가장 긴 차원의 뷰포트에 맞게 먼저 조절됩니다. 다음으로 짧은 치수는 길이를 늘려 뷰포트를 채우므로 가로 세로 비율은 에서 계속 변경됩니다.

원하는 내용이 정확하지 않은 경우이 기사에는 필요한 내용을 다루는 몇 가지 예제가 있습니다.

+0

고마워요! 그게 내가 필요한 것! – bnunamak

관련 문제