« La ricerca sul web | Main | I livelli in Photoshop »

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.

Cast Member e Rollover

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.

  1. 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.
  2. L'operatore repeat esegue ripetutamente (ossia continua ad eseguire) un'azione, fintantoché si verifica una condizione espressa dall'operatore while.
  3. L'operatore while enuncia la condizione al cui verificarsi viene eseguita l'azione prevista in repeat.
  4. 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.
  5. sprite(1) chiama in causa lo sprite (qualunque esso sia) contenuto nel livello 1.
  6. memberNum(1) chiama in causa il cast member contenuto al posto Uno nel cast.

Il risultato del rollover appena costruito è scaricabile da qui.