2012-11-02 15 views
8

Używam programu scene2d w bibliotece libgdx do tworzenia niektórych interfejsów w mojej grze.Dlaczego tabela Libgdx nie akceptuje akcji skalowania?

Użyłem tabeli i chcę wykonać jakąś czynność skalowania, gdy użytkownik dotknie, aby przycisk dotykał zmysłu.

Kiedy użyłem dowolnego innego rodzaju "Aktora", takiego jak Grupa, i podając akcję skalowania, działa, ale nie Tabela.

to jest moja definicja Tabela:

Table table = new Table(); 
table.setSize(width, height); 
table.setPosition(x, y); 
table.setOrigin(width/2, height/2); 
table.add(new Label(...)); 
table.row(); 
... 

I w moim przypadku Touchdown daję mu działanie skalę:

table.addAction(Actions.scaleTo(0.8f, 0.8f, 0.1f)); 

I Touchup daję kolejną akcję, aby uzyskać oryginalną skalę:

table.addAction(Actions.scaleTo(1f, 1f, 0.1f)); 

Jak już powiedziałem ten kod działa dla innych typów aktorów, takich jak Obraz i Grupa. Jakieś pomysły, dlaczego nie pasuje do stołu?

Odpowiedz

15

Odpowiadając na moje własne pytanie:

W celu dokumentacji libgdx za (https://code.google.com/p/libgdx/wiki/scene2dui#Rotation_and_scale) Tabela nie wspiera skalowanie i obracanie czy to tło zostało ustawione.

Jeśli chcemy przeskalować i/lub obrócić stół musimy zachowywać się jak poniższy kod:

TextButton button = new TextButton("Text Button", skin); 
Table wrapper = new Table(); 
wrapper.add(button); 
wrapper.setTransform(true); 
wrapper.setOrigin(wrapper.getPrefWidth()/2, wrapper.getPrefHeight()/2); 
wrapper.setRotation(45); 
wrapper.setScaleX(1.5f); 
+2

W najnowszej wersji biblioteki (0.9.8) 'setTransform' wydaje się być brakuje, ale możesz zamiast tego wywołać 'setClip (true)', które umożliwia transformację jako efekt uboczny. – Nick

+1

@Nick - setTransform nadal istnieje poniżej 0.9.8. Jest to metoda 'Group' http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Group.html#setTransform%28boolean%29 – Pool

+0

Pracowała dla mnie, thanx! –

Powiązane problemy