2017-02-22 94 views
1

在LibGDX中,我想为我的游戏制作文本动画。因此,我希望我的标签随着时间变大。但是如果我使用scaleTo()方法,则没有任何反应,而其他操作如moveTo()正常工作。将Actions.scaleTo()添加到LibGDX中的标签

label1 = new Label("Test text", new Label.LabelStyle(font, Color.BLACK)); 
label2.addAction(Actions.parallel(Actions.moveTo(500, 300, 2.0f),Actions.scaleTo(0.1f, 0.1f,2.0f))); 

label2 = new Label("Test text 2", new Label.LabelStyle(font, Color.BLACK)); 
label2.addAction(Actions.parallel(Actions.moveTo(500, 300, 2.0f),Actions.scaleTo(0.1f, 0.1f,2.0f))); 

stage.addActor(label1); 
stage.addActor(label2); 

如何让我的标签缩放?先谢谢你!

+0

下降的人可以请他的投票来证明他的投票吗?我知道我是初学者,但为什么这个问题不好? – erik4thewinners

+0

在标签上调用setTransform(true)以启用缩放。大多数小部件默认关闭它,因为它会导致批量刷新。 – Tenfour04

+0

setTransform()是类Group的一个方法。标签不会从这个类扩展。所以该方法不适用于标签... – erik4thewinners

回答

3

由于性能原因,大多数scene2d.ui组默认情况下将变换设置为false。

更多细节,您可以检查
https://github.com/libgdx/libgdx/wiki/Scene2d.ui#rotation-and-scale

如果你想扩展,您可以使用的容器中,设置一个Widget的尺寸和定位有用。

private Container<Label> container; 

@Override 
public void create() { 
    stage=new Stage(); 

    Label label1 = new Label("Test text", new Label.LabelStyle(font, Color.BLACK)); 

    container=new Container<Label>(label1); 
    container.setTransform(true); // for enabling scaling and rotation 
    container.size(100, 60); 
    container.setOrigin(container.getWidth()/2, container.getHeight()/2); 
    container.setPosition(100,200); 
    container.setScale(3); //scale according to your requirement 

    stage.addActor(container); 
} 

@Override 
public void render() { 
    super.render(); 

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

    stage.draw(); 
    stage.act(); 
} 

将您的操作添加到容器而不是标签。

container.addAction(Actions.parallel(Actions.moveTo(500, 300, 2.0f),Actions.scaleTo(0.1f, 0.1f,2.0f))); 
+1

问题解决了,谢谢! – erik4thewinners

1

标签不直接支持缩放。解决此问题的简单方法是将标签放在容器上的容器setTransform(true)中,然后将缩放操作添加到容器。