Tranquillo Winz, quando ho tempo sono ben felice di darti una mano.
Ora ho un paio di minuti quindi passo alla tua domanda N.4:
4-Come funzionano le animazioni perpetue? ad esempio una tenda mossa dal vento. Questa domanda può essere ricollegata a quella sotto..per ora ho ovviato creando lo sfondo in movimento...ma si possono mettere solo 4 sfondi per rendere effettiva l'animazione?
Come hai già notato, è possibile sfruttare una funzione built-in per animare il fondale; sono ammessi solo 4 fondali addizionali a quello di base (background(0)) per cui potrebbero non essere sufficienti; infatti tale funzione va usata solo per animazioni che coinvolgono l'intero fondale e comunque con pochi frames. per lo più si usa per fare effetti di luce sulla scena.
Creare una animazione perpetua di un oggetto (una tenda che si muove, come nel tuo esempio) è piuttosto semplice; vediamo come fare in maniera veloce ed efficace:
Crea degli sprites, con sfondo trasparente, che compongono l'animazione di una tenda che si muove (facciamo, ad esempio, che ti servano 10 immagini, che messe in successione compongono l'animazione della tenda che si muove).
Crea una "View", nell'apposito menù e chiamala, ad esempio: Tenda_animazione. AGS assegnerà a questa view un numero (ad esempio 35).
Nella view crea un nuovo "loop" e piazzaci le 10 immagini della tenda in successione. Se il loop da te creato è il primo loop della view sarà assegnato il numero 0 (zero).
Ora vai nella stanza in cui vuoi animare la tenda e piazzaci un oggetto (chiamalo ad esempio "oTenda"). Assegnagli il primo sprite della tenda (o un altro a caso, non è importante, purchè sia parte dell'animazione della tenda).
Sposta la tenda nella posizione desiderata nella stanza (ad esempio davanti ad una finestra).
Ora: crea la function room_FirstLoad() (che viene richiamata solo la prima volta che entri.
e nella function crei questo semplice script:
function room_FirstLoad()
{
oTenda.SetView(35, 0, 0); //è importante assegnare, prima dell'animazione il frame di partenza; la view nel nostro esempio è la numero 35, il loop è il numero 0.
oTenda.Animate(0, 5, eRepeat, eNoBlock, eForwards);
//in pratica l'animazione della tenda si ripeterà all'infinito (eRepeat), anche se entri e rientri nella stanza. In particolare, nell'esempio, ripeterà il Loop 0, a velocità 5, all'infinito (eRepeat), senza mettere in pausa il gioco (eNoBlock ... non dimenticare questo altrimenti il gioco si blocca) e in verso "avanti"
}