2013-07-26 3 views
3

저는 textButton을 가지고 있으며 90deg만큼 회전 된 화면에 배치하려고합니다.libgdx로 TextButton을 회전하십시오.

어떤 이유에서든 TextButton 객체로 설정된 모든 회전 방법 (rotate(), setRotationAngle() 등)이 제대로 작동하지 않습니다.

그래서 TextButton 및 재정의 무승부() 메소드를 확장 새로운 클래스를 구현했습니다 :

@Override 
public void draw(SpriteBatch batch, float parentAlpha) { 
    Matrix4 rotationMatrix = new Matrix4(); 
    Matrix4 oldMatrix = batch.getTransformMatrix(); 
    rotationMatrix.idt(); 
    rotationMatrix.rotate(new Vector3(this.getX(),this.getY()+this.getHeight(),0),rotationAngle); 
    batch.setTransformMatrix(rotationMatrix); 
    super.draw(batch, parentAlpha); 
    batch.setTransformMatrix(oldMatrix); 
} 

rotationAngle가 90.0로 동일합니다. 그리고 어떤 이유로 버튼이 90도 회전하지는 않지만 알 수없는 정도의 각도가 있습니다.

enter image description here

UPD

나는 TextButton 객체로 다시 전환하고있었습니다 : 그것은 거의 버튼의 텍스트를 의미했다

newGame.setTransform(true); 
newGame.rotate(90); 

가 corrently 회전했지만, 배경 버튼이 그 자리에 남았습니다.

enter image description here

제 질문은 : 왜 이런 일이 생기고 어떻게 해결할 수 있습니까?

답변

3

내가 여기 documentation

에 따라 위젯을 회전 구현은 내 코드입니다 위젯이 회전 된 경우.

1

기존 액터의 회전 방법이 작동해야합니다. 아마도이 문제를 추적하기 위해 다른 질문을 할만한 가치가있을 것입니다.

  1. 기본 배치 transorm 매트릭스 아마 행렬되지 않습니다 :

    나는 적어도 두 가지 문제를 참조하십시오. 아마도 rotationMatrixoldMatrix 사본으로 초기화할까요?

  2. 당신은 정말 임의의 벡터를 중심으로 회전합니다 (원점에서 단추의 왼쪽 아래부터 왼쪽 상단까지 한 줄을 그립니다). 시도하십시오 Vector3(0, 1, 0).

+0

다른 벡터로 회전해도 도움이되지 않았습니다.그러나 TextButton 객체의 setTrasform() 메서드는 버튼의 텍스트를 회전하는 데 도움이되었지만 버튼 자체는 회전하지 않았습니다. (질문을 업데이트했습니다.) –

2

수정되지 않으므로 닫힌 project issue이 있습니다.

가위로 클리핑이 구현되어 있기 때문에 scene2d의 UI 요소를 아무 것도 회전시킬 수 없습니다. 가위는 축 정렬 된 사각형을 필요로합니다. 심지어는 예상대로

rotatingActor.setRotation(newDegree); 

모든 클릭 처리기 등 작업 :

Table buttonContainer = new Table(skin); 
buttonContainer.setTransform(true); 
buttonContainer.add(button1); 
buttonContainer.row().pad(10); 
buttonContainer.add(button2); 
rotatingActor = buttonContainer; 

다음 :

+0

그래, 그렇다고해서 행렬 변환으로 회전을 구현할 수 없다는 의미는 아닙니다. –