Vi sembrerò monotono ma ache stavolta faccio riferimento alla Miniguida di 'masmil1988'
Voglio evidenziare come evitare di mandare in tilt mShell durante l'esecuzione del beep().
use audio; audio.beep(1700,500) audio.beep(1990,500) audio.sleep(500)
Se si tenta di eseguire quanto qui riportato verrà generato un segnale di errore ErrInUse: File or device is in use
In genere in un programma non è così palese l'errore. Allora, letto quanto segue dalla 'Mini Guida'
Riprodurre un beep
audio.beep(frequenza,millisec);
while audio.busy() do end;
Con questa funzione possiamo far riprodurre al cellulare un determinato suono alla frequenza voluta, per il tempo che desideriamo. Tra parentesi dobbiamo scrivere due numeri: la frequenza del suono da riprodurre e il tempo (espresso in millisecondi) per il quale dovrà essere riprodotto il suono.
Dopo la funzione audio.beep() dobbiamo tenere il cellulare impegnato a fare qualcosa (anche a fare "niente", come nel codice di cui sopra), in questo caso con while audio.busy() do end;, che significa che il cellulare resta impegnato a fare "niente" intanto che l'audio è impegnato (la funzione audio.busy() ci dice se l'audio è o non è impegnato).
perciò il programma deve attendere che finisca la durata del suono prima di eseguirne un altro
use audio; audio.beep(1700,500) sleep(500) // <-- attende per il tempo del suono audio.beep(1990,500) audio.sleep(500)
oppure così:
use audio; audio.beep(1700,500) while audio.busy() do end; //attende che termini audio.beep(1990,500) audio.sleep(500)
Ora nei programmi di giochi non si può tenere ferma una pallina che stà rimbalzando o un Mario Bros che deve saltare i barili
per aspettare che finisca il suono.
Per ovviare a questo problema esiste il seguente comando:
Stoppare il suono in esecuzione.
audio.stop();
Per fermare un file audio in riproduzione basta questa semplicissima funzione.
use audio; audio.beep(1700,500) // qui passa del tempo impegnato dal programma audio.stop() // se il programma arriva qui prima che audio.beep(1700.500) sia finito lo blocca audio.beep(1990,500) sleep(500)
Spero di esservi stato utile..
Messaggio modificato da lento il 24 maggio 2009 - 08:21

Aiuto














Pubblicità