2017-02-22 6 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

Если вы хотите масштабировать, вы можете использовать контейнер, который полезен для установки размера и выравнивания одного виджета.

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) на контейнер, и добавить масштабное действие в Контейнер.

Смежные вопросы