Controllare gli sprite con Lingo
L'uso professionale di Director, prevede che la maggior parte degli eventi che si verificano in un CD Rom vengano controllati mediante l'uso di Lingo, il linguaggio di scripting di Director. In questa lezione si vedrà come creare un rollover utilizzando esclusivamente Lingo, che, applicato opportunamente, consentirà di sostituire uno sprite con un altro, laddove il mouse dell'utente sia premuto sopra l'area attiva del pulsante.
La finestra Message
Director invia messaggi ogniqualvolta si verifica qualche evento in un filmato. Per esempio, quando l'utente tiene premuto il pulsante del mouse, si verifica un evento mouseDown e Director risponde inviando un messaggio mouseDown. Tale messaggio resta disponibile per un periodo di tempo, in cui l'evento può essere reso disponibile a Lingo. Il processo che collega il verificarsi di un evento all'invio di un messaggio può essere osservato utilizzando la finestra Message. Se si costruisce un filmato e lo si manda in play, tenendo aperta la finestra Message, è possibile visualizzare di volta in volta tutti gli eventi e le azioni ad essi collegate, mano a mano che si verificano.
Oltre che per visualizzare i messaggi inviati da Director, la finestra Message può servire per impartire degli ordini a Director tramite Lingo. Per questo motivo, di norma, la finestra Message viene utilizzata per collaudare e sottoporre a debug gli script Lingo.
Controllare i rollover
Per costruire un rollover è innanzitutto necessario aver importato nel cast i due stati del pulsante, up e down, come nell'immagine sotto descritta.
Dopo aver posizionato sullo stage il pulsante (nello stato disattivo), inseriamo uno script di cast che consenta l'esecuzione del rollover.
Lo script che inseriremo sarà il seguente:
on mouseDown
repeat while the mouseDown
if rollOver(1) = TRUE then
sprite(1).memberNum = 2
else
sprite(1).memberNum = 1
end if
updateStage
end repeat
sprite(1).memberNum = 1
updateStage
end
Lo script che precede contiene dei nuovi operatori Lingo che verranno esaminati in dettaglio di seguito.
- L'operatore if...then...else pone a Director una condizione. A seconda che si verifichi o meno la condizione che segue if (in questo caso rollOver(1) = TRUE) viene eseguita l'azione seguente, in caso contrario (else) viene eseguita l'azione che segue else.
- L'operatore repeat esegue ripetutamente (ossia continua ad eseguire) un'azione, fintantoché si verifica una condizione espressa dall'operatore while.
- L'operatore while enuncia la condizione al cui verificarsi viene eseguita l'azione prevista in repeat.
- rollOver(1) è la condizione di if. L'operatore rollOver(1) restituuisce TRUE se e solo se il mouse dell'utente si trova sopra lo sprite contenuto nel livello 1. In tutt gli altri casi restituisce FALSE.
- sprite(1) chiama in causa lo sprite (qualunque esso sia) contenuto nel livello 1.
- memberNum(1) chiama in causa il cast member contenuto al posto Uno nel cast.
Il risultato del rollover appena costruito è scaricabile da qui.