2014-06-19 2 views
0

LibGDX에서 HorizontalGroup을 사용하고 있습니다. 나는 타일들의 열을 만들고 싶다. 그러나 setPosition() 메서드를 사용하여 그룹을 배치하려고하면 "y"값을 사용하여 렌더링하지 않습니다. 당신이 볼 수 있듯이, 내가 사용하는LibGDX에서 WidgetGroup 위치 지정

public class Tile extends Actor { 
private String letter; 
private int points; 
private Texture texture; 

public Tile(Texture tileTexture, String letter, int points) { 
    this.letter = letter; 
    this.points = points; 
    texture = tileTexture; 
} 

@Override 
public void draw(Batch batch, float parentAlpha) { 
    batch.draw(texture, getX(), getY(), getWidth(), getHeight()); 
} 

: 여기

a = new Tile(missingwords.getAM().get("a2.png", Texture.class), "a", 3); 
b = new Tile(missingwords.getAM().get("a2.png", Texture.class), "a", 3); 
c = new Tile(missingwords.getAM().get("a2.png", Texture.class), "a", 3); 
a.setSize(50, 50); 
b.setSize(50, 50); 
c.setSize(50, 50); 
submitGroup = new HorizontalGroup(); 
submitGroup.addActor(a); 
submitGroup.addActor(b); 
submitGroup.addActor(c); 
submitGroup.setPosition((Gdx.graphics.getWidth() - submitGroup.getMinWidth())/2, 0); 
stage.addActor(submitGroup); 

내 타일 코드 :

submitGroup.setPosition((Gdx.graphics.getWidth() - submitGroup.getMinWidth())/2, 0); 

이 그것을 Y = 0로 렌더링해야 함을 의미 여기에 코드입니다 그러나이 스크린 샷을 살펴보십시오.

타일이 화면을 벗어나서 그 이유를 모르겠습니다. 내가 뭘 놓치고 있니?

미리 감사드립니다.

+0

흥미로운 점 : 나는 생성자에'getY()'값을 출력했고'-25.0'입니다. 나는 혼란 스럽다 ... – adrianoubk

답변

2

이유는 기본 맞춤이 HorizontalGroup : Align.center 인 것처럼 보입니다. 이 때문에 Tile y 위치는 -25.0 (타일 액터의 높이/2)입니다. 예를 들어 높이가 100 인 타일을 만들면 HorizontalGroup에서 타일의 y 위치는 -50이됩니다. 아래로 HorizontalGroup의 정렬을 수정

  1. : submitGroup.align(Align.bottom);
  2. 단지 25에 HorizontalGroup의 y 위치를 설정하는 대신 0에 의해 당신이 원하는 것처럼

    나는 타일을 배치하는 두 가지 방법을 참조 ;

+0

대단히 감사합니다 !!!! 나는 기본 정렬이'Align.center'라는 것을 몰랐다. 그러나 '센터'는 무대에 따라? – adrianoubk

+1

[HorizontalGroup] (https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/scenes/scene2d/ui/HorizontalGroup.java)의 소스 코드를 확인할 수 있습니다.) 사실 나는 bottom() 메소드가 있다는 것을 알아 냈으므로이 메소드도 잘 작동한다.'submitGroup.bottom();' – donfuxx