Le trasformazioni agiscono singolarmente e separatamente una dall'altra: per quanto l'oggetto Transform3D consenta diverse operazioni, come rot()
, rotX()
, rotY()
, rotZ()
e translate()
, quando richiamiamo una funzione di trasformazione tutte le operazioni eseguite in precedenza vengono annullate, ovvero le trasformazioni richiamate su uno stesso oggetto Transform3D sono separate una dall'altra.
Possiamo comprendere meglio questo aspetto creando un esempio dove le funzioni di rotazione siano richiamate tramite tre slider.
Listato 18. Associa la rotazione al valore degli slider
function setUpControls(){
var xCh:Object = new Object();
xCh.onChange = function(evt:Object){
xRot.text = evt.value;
rotation.rotX(evt.value);
}
xSlider.addListener(xCh);
var yCh:Object = new Object();
yCh.onChange = function(evt:Object){
yRot.text = evt.value;
rotation.rotY(evt.value);
}
ySlider.addListener(yCh);
var zCh:Object = new Object();
zCh.onChange = function(evt:Object){
zRot.text = evt.value;
rotation.rotZ(evt.value);
}
zSlider.addListener(zCh);
}
Otteniamo il seguente risultato: proviamo a muovere i diversi slider!
Trasformazioni univoche
Vediamo che quando effettuiamo una rotazione, le precedenti vengono annullate. Questo ci porta a dire che le trasformazioni non sono "addittive", ovvero non vengono "aggiunte" alle precedenti, ma sono univoche e prendono come riferimento lo stato di default dell'oggetto.
Per poter combinare più trasformazioni e aggiungerle e quelle precedenti dovremmo utilizzare delle funzioni che coinvolgano più variabili; un'altra possibilità è combinare più gruppi di trasformazione: vedremo tra poco come fare.
"© Petit Publications 2006" - diritti riservati