Android 使用libgdx旋转文本按钮

Android 使用libgdx旋转文本按钮,android,libgdx,matrix-transform,Android,Libgdx,Matrix Transform,我有一个文本按钮,我想把它放在屏幕上旋转90度 由于某些原因,与TextButton对象关联的所有旋转方法(rotate()、setRotationAngle()等)都无法正常工作 因此,我实现了扩展TextButton和重写draw()方法的新类: 其中,rotationAngle等于90.0。出于某种原因,按钮并没有旋转90度,而是旋转了未知的角度 UPD 在我切换回TextButton对象并执行以下操作后: newGame.setTransform(true); newGame.rota

我有一个文本按钮,我想把它放在屏幕上旋转90度

由于某些原因,与TextButton对象关联的所有旋转方法(rotate()、setRotationAngle()等)都无法正常工作

因此,我实现了扩展TextButton和重写draw()方法的新类:

其中,
rotationAngle
等于90.0。出于某种原因,按钮并没有旋转90度,而是旋转了未知的角度

UPD

在我切换回TextButton对象并执行以下操作后:

newGame.setTransform(true);
newGame.rotate(90);
这几乎起到了作用,这意味着按钮中的文本被相应地旋转,但按钮的背景仍停留在它的位置上:


所以我的问题是:为什么会发生这种情况,我该如何解决

现有参与者的轮换方法应该有效。也许值得再问一个问题来追踪这个问题

我至少看到两个问题:

  • 默认的批处理转换矩阵可能不是单位矩阵。是否可以将
    旋转矩阵
    初始化为
    旧矩阵
    的副本

  • 您正在围绕一个真正任意的向量旋转(从原点画一条线——在按钮的左下角到左上角)。尝试
    Vector3(0,1,0)

  • 有一个因无法修复而关闭的

    scene2d中的任何UI元素都不能旋转,因为剪裁是通过剪切实现的。剪切需要轴对齐的矩形


    我根据

    这是我的密码:

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

    rotatingActor.setRotation(newDegree);
    

    即使小部件被旋转,所有的点击处理程序等也能按预期工作。

    使用其他向量旋转没有帮助。但是TextButton对象的方法setTrasform()有助于旋转按钮的文本,但没有旋转按钮本身(我更新了这个问题),好吧,但这并不意味着不能通过矩阵变换实现旋转。
    rotatingActor.setRotation(newDegree);