In Papervision gli eventi vengono gestiti in modo molto simile a quello usato da Flash. Un evento può essere scatenato dalla pressione di un tasto sulla tastiera (in questo caso è gestito con le classiche istruzioni di Flash), dal moviemento del mouse, o dalla fine del caricamento di una texture.
In questa lezione vediamo come collegare gli eventi del mouse ai materiali applicati. Nella pratica aggiungeremo l'evento all'oggetto, ricordando di rendere la texture interattiva.
La classe più usata è sicuramente InteractiveScene3DEvent il cui costruttore è
InteractiveScene3DEvent( type:String, container3d:DisplayObject3D = null, sprite:Sprite = null, face3d:Triangle3D = null, x:Number = 0, y:Number = 0, renderhitData:RenderHitData = null, bubbles:Boolean = false, cancelable:Boolean = false)
Per il momento disinteressiamoci di tutti questi parametri visto che, e concentriamoci sulle costanti che determinano il tipo di evento:
Costante | Descrizione "chiamata" |
---|---|
OBJECT_ADDED | all'aggiunta di un oggetto figlio |
OBJECT_CLICK | al click del mouse sull'oggetto |
OBJECT_DOUBLE_CLICK | al doppio click del mouse sull'oggetto |
OBJECT_MOVE | quando il puntatore del mouse si muove sopra ad un oggetto |
OBJECT_OUT | quando il puntatore del mouse esce dall'oggetto |
OBJECT_OVER | quando il puntatore del mouse va sopra ad un oggetto |
OBJECT_PRESS | alla pressione del mouse |
OBJECT_RELEASE | al rilascio del mouse |
OBJECT_RELEASE_OUTSIDE | al rilascio del mouse quando il puntatore è fuori dall'oggetto |
L'uso degli eventi è poi pressocché identico a quello di flash per cui creato un solido avremo che
materiale.interactive = true;
//...
solido.addEventListener( InteractiveScene3DEvent.OBJECT_OVER,
mia_funzione);
function mia_funzione(event:InteractiveScene3DEvent):void
{
trace (event.displayObject3D.name);
}
Notiamo che all'interno della funzione per richiamare il solido dal parametro passato alla funzone dobbiamo scrivere event.displayObject3D
. Vediamo ora un esempio pratico dell'uso degli eventi:
Possiamo vedere tutto il codice dell'esempio qui