Director: verifica dei canali audio.

Innanzi tutto ciao a tutti.
Ho vari filmati, nel primo faccio partire la base del filmato, quando però si accede al filmato principale, vorrei poter controllare se il canale audio 1 è in riproduzione. Se non è in riproduzione avviare nuovamente la base.
Questo perché non vorrei dover fare ripartire la base ad ogni nuovo movie.

Girando nel manuale di Lingo ho trovato la procedura isbusy, ma anche associando questa procedura ad uno script sullo Score non riesco a controllare se nel canale 1 ci sia in riproduzione qualcosa, e se non c'è nulla in riproduzione fare ripartire il file audio...

Ci sarebbe un modo per far riprodurre una stessa base audio in loop avviandola da un movie, ma poterla ascoltare in tutti i movie in loop?

Spero di aver spiegato bene il mio problema, vi ringrazio in anticipo!

:)

Grazie...

 Ms-Keng, N.D.

Ciao di nuovo,
allora ho provato un pò tutto:

on exitFrame me
go to the frame
if (sound(1).isBusy()) then
sound(1).play(member("miabase"))
end if

Ma se associo questo script allo Score mi succede che il cursore arriva a questo frame ed inizia a loopare una piccola parte del suono che c'è nel canale 1 ed esce un trtrttrttrtrtrtrtr, bruttissimo....

Ho provato anche a non mettere “on exitFrame me” ma Director non si accorge che nel canale 1 ci sta qualcosa, e mi fa ripartire la base... insomma un macello.
Non è possibile dire a director:
«se nel canale 1 ci sta qualcosa in riproduzione allora non fare nulla?»

Se non c’è nulla in riproduzione allora:
sound(1).play(member("miabase"))

-- impostando che miabase va in loop avrei risolto il problema, perchè ad ogni “on exitframe me” go to the frame
stop dello Score di ognuno dei movie immetterei il codice e quindi non ci sarebbe problema di stop dellÂ’audio, che non verrebbe avviato ogni volta, ma solo quando finisce, il suono sarebbe automaticamente riavviato dallo script.

Grazie ancora dello spazio messomi a disposizione.


 Ms-Keng, N.D.

Director: funzione isBusy.

La funzione isBusy è proprio quella giusta che devi usare.
Infatti, isBusy controlla se un suono è in riproduzione su uno specificato canale di Director.
Restituisce il valore TRUE se nel canale specificato c'è un suono in fase di riproduzione.

Il seguente script controlla se è in fase di riproduzione un suono sul canale n.1.
Se il canale audio n.1 è occupato, il valore restituito sarà TRUE, ed eseguirà lo stop per fermare il suono.

on exitFrame me
if sound(1).isBusy() then
sound(1).stop()
end if
end


È logico che se inserisci il “go to the frame” per far andare in loop la testina di riproduzione e ad ogni exitFrame, allora l’IF con isBusy dovrà fare tale controllo ad ogni frame, quindi nel tuo caso farà trtrtrtrtr.
Questo perché nel tuo caso inizierà ogni volta, ad ogni nuovo frame, la riproduzione del suono.

Per fare quel che dici tu, basta fermare lÂ’audio presente e far subito dopo ripartire il suono X.
Ma il tuo problema importante è che devi far uscire la testina dal frame della verifica, altrimenti devi usare un altro tipo di script, ad es. un Movie Script (script associato al filmato).

 Pablito, N.D.

Oky grazie Pablito, ho associato al Movie questo script:

on startMovie
if (sound(1).isBusy()=FALSE) then
sound(1).play(member("spellbound"))
end if
end

Grazie ancora, alla prossima. :-)

 Ms-Keng, N.D.

Ottimo, nota pure che a volte le parentesi tonde non servono, a differenza dellÂ’ActionScript di Flash.
Ad esempio:
if (sound(1).isBusy()) then

È meglio scriverlo così:
if sound(1).isBusy() then

Per il resto contiamo anche sul tuo aiuto, ciao.

 Pablito, N.D.
001design.it ® è un marchio registrato.
© 2004-2017 Molfese Paolo - P.Iva: 03430820617 - All rights reserved | Tutti i diritti sono riservati.