Flash: suono on/off

Di: TCK | 26/09/2020 18:33:14
Ciao a tutti,
come faccio a realizzare un pulsante in cui cliccandoci si disabilita tutta la musica presente nel filmato e cliccandoci nuovamente riparte di nuovo la musica? Grazie mille!
Biagio

Risposte



Ciao Biagio,
si può fare, ma lo devi progettare fin dall’inizio, se hai un suono sul fotogramma impostato con sincronizzazione Streaming devi agire per forza sulla linea temporale che lo contiene.
Una soluzione non complessa sarebbe quella di applicare il tuo suono a un MovieClip senza grafica e di comandare la linea temporale di questo MovieClip.
Una soluzione più esatta sarebbe quella di fare uso dell’Oggetto Sound di ActionScript.

Di: Professore | 26/09/2020 18:33:14


Puoi scrivermi un esempio, professore?

Di: TCK | 26/09/2020 18:33:14


Immagino che tu abbia applicato il suono direttamente sui fotogrammi della linea temporale principale.
Possiamo prendere il controllo dei suoni che si trovano su una linea temporale se conosciamo il nome di quella linea temporale.
Quella principale si chiama _root.
L’oggetto Sound di ActionScript serve a comandare i suoni dei nostri filmati, per usarlo basta dichiararlo in questo modo:
var Musica:Sound = new Sound(_root);
Abbiamo creato un oggetto Sound, lo abbiamo chiamato Musica e gli abbiamo detto che lui deve contenere qualsiasi suono della nostra _root.
Possiamo utilizzare tutti i metodi dell’oggetto Sound sul nostro oggetto Musica per comandare i suoni del nostro filmato principale.
ti consiglio di andarti a guardare tutti i metodi di questo oggetto, adesso ne utilizzaremo soltanto due, ma sono tantissimi
Invece di fermare davvero il suono i gli cambierei il volume, così da creare un tasto Mute.
Quando il volume è a 100 sentiamo la musica, quando il volume è a 0 non sentiamo niente.
Quindi la prima cosa da fare è controllare a quanto è impostato il volume.
Se il volume è zero, dobbiamo farlo diventare 100.
Se il volume è 100, dobbiamo farlo diventare zero.
Per conoscere il volume del nostro suono utilizziamo un metodo dell’oggetto Sound, getVolume:
Musica.getVolume();
Per cambiare il volume utilizziamo il metodo setVolume:
Musica.setVolume(un numero da 0 a 100);
[HR]
Apro una piccola parentesi che non c’entra molto ma vorrei parlare dell’operatore ternario, che è un tipo di operatore condizionale che ci fa risparmiare un sacco di righe di codice e che quasi nessuno utilizza.
Sappiamo che se il nostro volume è zero dobbiamo farlo diventare 100 e viceversa. La maggior parte delle persone scrivono così:
if (variabile == 0) {
variabile = 100;
} else {
variabile = 0;
}
La stessa identica cosa si può scrivere con un solo comando, invece di 5 righe ne occupiamo una soltanto ed è più snello:
variabile = variabile==100?0:100;
E il risultato è lo stesso. Abbiamo utilizzato due simboli che di solito non si vedono spesso, il punto interrogativo e i due punti; la sintassi è questa:
[condizione] ? [valore da assumere se la condizione è vera] : [valore da assumere se la condizione è falsa]
Ora continuiamo col nostro volume.
[HR]
In un unica riga, utilizzando l’operatore ternario, scriveremo l’istruzione che dice:
Imposta il volume a 100 se il volume è a 0, altrimenti imposta il volume a 0
Musica.setVolume(Musica.getVolume() == 0 ? 100 : 0);
E questo è il comando per il nostro pulsante on/off... semplicissimo!
Siamo arrivati alla fine, adesso scriveremo tutto quanto assieme.
Abbiamo posizionato un pulsante (o un MovieClip) sullo Stage e lo abbiamo chiamato onoff.
Abbiamo la nostra musica che suona sulla _root.
Non ci rimane che andare sugli script del fotogramma e inserire questo:
var Musica:Sound = new Sound(_root);
onoff.onPress = function() {
Musica.setVolume(Musica.getVolume() == 0 ? 100 : 0);
};
Fatto.

Di: Professore | 26/09/2020 18:33:14