2012-11-02 16 views
8

Sto usando scene2d nella libreria libgdx per creare un'interfaccia utente nel mio gioco.Perché la tabella di Libgdx non accetta azioni in scala?

Ho usato una tabella e desidero eseguire alcune azioni di ridimensionamento quando l'utente tocca per rendere sensato un pulsante.

Quando ho utilizzato altri tipi di "Attore" come Gruppo e assegnando un'azione in scala, funziona ma non Tabella.

questa è la mia definizione Tabella:

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

E nel mio caso in touchdown Ho dato un un'azione di scalatura:

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

E in Ritocco mi danno un'altra azione per ottenere scala originale:

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

Come ho detto questo codice funziona per altri tipi di attori come Immagine e Gruppo. Qualche idea che non funziona per Table?

risposta

15

Rispondendo alla mia domanda:

Al fine di documentazione del libGdx (https://code.google.com/p/libgdx/wiki/scene2dui#Rotation_and_scale) tabella non supporta il ridimensionamento e la rotazione se il suo sfondo è stato fissato.

Se vogliamo scalare e/o ruotare il tavolo che abbiamo a comportarsi come il codice qui sotto:

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

Nell'ultima versione della libreria (0.9.8) 'setTransform' sembra mancare, ma puoi invece chiamare 'setClip (true)' che abilita la trasformazione come un effetto collaterale. – Nick

+1

@Nick - setTransform è ancora lì sotto 0.9.8. È un metodo di 'Gruppo' http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Group.html#setTransform%28boolean%29 – Pool

+0

Ha funzionato per me, grazie! –