Director: miaw e suoni

Di: myllapikkulina | 26/09/2020 17:49:43
ciao a tutti
ho due quesiti da porvi
1
ho creato un projector con director mx 2004
il movie in questione reimposta la risoluzione del monitor come richiesto
il problema è che l'interfaccia del movie rimane in secondo piano rispetto alla barra delle applicazioni di windows
mentre io vorrei che finisse in primo piano..
ho lavorato poche volte con director e per ora è la prima volta che mi capita questo problema e non capisco come posso risolverlo..
2
il progetto comprende un movie per la gestione del volume dell'audio che viene caricato come MIAW
se apro la MIAW del volume, l'audio che è attualmente in play si stoppa
gli script che gestiscono il volume funzionano (lo so perche dopo che si hciude la MIAW ho provato ad ascoltare altre tracce ed è tutto ok)
il problema è che ho una musica di sottofondo che rimane in loop fino alla fine del movie e una volta che si è aperta la MIAW del volume non riparte piu..
spero di essere stata chiara
grazie in anticipo per il vostro aiuto..

Risposte



dunque
il problema della barra delle applicazioni l'ho risolto..
anche se non ho capito bene come..
mah!
quello dell'audio per ora rimane

Di: myllapikkulina | 26/09/2020 17:49:43


Potrebbe dipendere da vari fattori..
Come fai partire l'audio? Quale codice usi per aprire la miaw? Un po di info in piu' non guasterebbero ;)
ciauz

Di: paolibo | 26/09/2020 17:49:43


questo è il codice che avvia l'audio
if (memberExists(mem)) then
sound(ch).play(mem)
else
sound(ch).playFile(the pathname & name & ".wav")
end if
e questo è il codice che apre il MIAW
MIAWwnd = window(MIAWName)
MIAWwnd.visible = false
set rct = rct + rect(the stageLeft, the stageTop ,the stageLeft, the stageTop)
MIAWwnd.rect = rct
if showImmediately then MIAWwnd.visible = true
return MIAWwnd

Di: myllapikkulina | 26/09/2020 17:50:43


Il codice non ha particolari errori se non in alcune proprietà che non sono la causa del tuo problema
the pathname è ormai obsoleto sostituito con la dot syntax da the moviepath
L'unica cosa che mi lascia perplesso è il perchè hai usato la proprietà visible per l'apertuta della miaw e non il classico open..
prova a cambiare quelle stringe così:
window().new("MIAWName")
window("MIAWName").open()
window("MIAWName").rect = rect(the stageLeft, the stageTop ,the stageLeft, the stageTop)
ecc. ecc.
se il problema persiste procedi in questo modo:
In uno script di movie:
on prepareMovie
if not the soundBusy of 1 then
sound playFile 1, "tuo_sound"
end if
end
on checkmusic me
if the soundbusy of 1 then
nothing
else
sound playFile 1, "tuo_sound"
end if
end
e in uno script di frame:
on exitFrame me
go the frame
checkmusic me
end
in questo modo ti funziona quasi sicuramente..
se ancora trovi problemi prova con quest'altra soluzione:
m = the frameSound1
s = sound(1).currentTime
--apri la miaw
puppetSound 1, m.name
sound(1).currentTime = s
anche se penso che con la procedura di prima riesci a risolvere tranquillamente..
ciauz

Di: paolibo | 26/09/2020 17:50:43


in realta questi sono script vecchi a cui non avevo lavorato io
(è anche per questo che potrebbero esserci proprieta e metodi obsoleti..)
domani faccio un po di prove con questi script che mi hai mandato
grazie della celere risposta
ciao!

Di: myllapikkulina | 26/09/2020 17:50:43


non ho capito bene dove devo mettere gli script che mi hai passato?
nel movie del volume?
cmq mi sa che la situazione è piu complessa di come l'ho posta..
nel primo movie ho un cast per le musiche di sottofondo e un cast per lo speakerato
a seconda delle scelte dell'utente si avvia una certa musica di sottofondo e un certo speakerato
i canali audio vengono scelti via script anche in base a quelli disponibili
a questo punto come posso sapere quale membro sta suonando nel momento in cui il MIAW si apre e su quale canale audio?

Di: myllapikkulina | 26/09/2020 17:50:43


diciamo che sto cominciando a capire..
allora te fai il play dei sound che si trovano all'interno di cast e non esternamente al movie giusto?
quindi il codice che hai postato prima:
if (memberExists(mem)) then
sound(ch).play(mem)
else
sound(ch).playFile(the pathname & name & ".wav")
end if
anzitutto cambialo con questo:
if (memberExists(mem)) then
sound(ch).play(mem)
else
sound(ch).playFile(the moviepath & name & ".wav")
end if
poi in uno script di filmato (sempre nel movie principale) ci metti questo codice:
on checkmusic me
if the soundbusy of ch then
nothing
else
sound playFile ch, mem
end if
end
e, sempre nel movie principale, in uno script di frame:
on exitFrame me
go the frame
checkmusic me
end
ps: le tue variabili ch e mem sono delle property o delle globali?

Di: paolibo | 26/09/2020 17:50:43


le variabili ch e mem sono parametri del metodo che viene invocata quando si desidera attivare un suono
e non vengono salvate nè come proprietà nè come var globali
è per questo che ti dicevo che non so come usare uno script del tipo soundbusy of ch perchè non so quale sia il channel attualmente in uso e tra l'altro potrebbero esserci diversi canali attivi contemporaneamente
(uno per lo speakerato uno per la musica uno per i suoni dei bottoni e cosi via..)

Di: myllapikkulina | 26/09/2020 17:51:43


lo script del tipo soundbusy of ch serve proprio a sapere quale canale del suono è occupato, quindi il ch penso sia proprio una variabile che stabilisca quale canale suono sia occupato in quel momento..
quindi quello che ti ho indicato come codice funziona se nelle variabili ch e mem siano inglobati i valori del sound channel e del member sound che vengono inizializzate...
se hai modo di mettere in ftp un dir di esempio forse si riuscirebbe meglio ad arrivare alla soluzione..
ciauz

Di: paolibo | 26/09/2020 17:51:43


io continuo a non capire
se volessi usare il tuo script (soundbusy of ch) dovrei scrivere una cosa del genere
soundbusy of 1
dove ch = 1
ma io non so che valore dare a ch perche ci sono tanti canali attivi
faccio un po fatica a spiegarmi
mi servirebbe uno script del tipo
on soundActiveChannels
[ricerca canali attivi]
return activeChannelsList
end
in modo che possa conoscere i canali attivi ed eventualemente ricavare gli audio che sono in play per poi riattivarli subito dopo il lancio della MIAW..
ora pero cerco di riformulare la domanda perche sto perdendo il filo del discorso
vorrei capire PERCHE l'audio si interrompe
da quello che succede sembra che, quando il MIAW viene lanciato, il nuovo movie prenda possesso dei canali audio perdendo di conseguenza l'audio che è in play
è corretto?
è normale che un MIAW interrompa l'audio del movie che l'ha lanciato?
forse l'errore sta nello script che avvia l'audio?
ci sono per caso delle impostazioni particolari nel lancio del MIAW che potrei usare per garantire la continuazione dell'audio?

Di: myllapikkulina | 26/09/2020 17:51:43


io continuo a non capire
se volessi usare il tuo script (soundbusy of ch) dovrei scrivere una cosa del genere
soundbusy of 1
dove ch = 1
ma io non so che valore dare a ch perche ci sono tanti canali attivi

allora se nel tuo codice hai usato ch sicuramente la stessa variabile sta a indicare il numero di canali attivi o occupati dai tuoi wave quindi ch = canale attualmente attivo
mi servirebbe uno script del tipo
on soundActiveChannels
[ricerca canali attivi]
return activeChannelsList
end
in modo che possa conoscere i canali attivi ed eventualemente ricavare gli audio che sono in play per poi riattivarli subito dopo il lancio della MIAW..

quello che chiedi è legittimo e uguale a quello che sto cercando di dirti cioè:
te inglobi in una variabile tutti i canali audio che possono essere occupati (8)..
successivamente ti fai un ciclo if o case che verifica il canale attivo..
il tutto lo implementi all'interno di uno script di movie, nel mio precedente script era checkmusic che "evocandolo" nello script di frame del movie principale permette di mantenere un tappeto musicale per tutta la durata del movie a prescindere da quante miaw vengano aperte..
ora pero cerco di riformulare la domanda perche sto perdendo il filo del discorso
vorrei capire PERCHE l'audio si interrompe
da quello che succede sembra che, quando il MIAW viene lanciato, il nuovo movie prenda possesso dei canali audio perdendo di conseguenza l'audio che è in play
è corretto?
è normale che un MIAW interrompa l'audio del movie che l'ha lanciato?
forse l'errore sta nello script che avvia l'audio?
ci sono per caso delle impostazioni particolari nel lancio del MIAW che potrei usare per garantire la continuazione dell'audio?

Non è normale che una miaw sospenda l'audio lanciato dal movie principale e quindi bisognerebbe sapere l'impostazione del movie stesso per risalire a ciò che causa questo problema..
Capisco in pieno la tua difficoltà soprattutto quando devi mettere mano a codice nn tuo o vecchio ma con un minimo ragionamento si arriva tranquillamente alla soluzione, ne sono convinto basta che ti applichi serenamente senza perdere la pazienza ;)
ps: se vuoi metto online un esempio magari riesci a capire meglio le dritte che ti sto dando
ciao e buon lavoro

Di: paolibo | 26/09/2020 17:52:43


ah guarda se riuscissi a mandarmi un esempio sarebbe fantastico..
io non credo di riuscire a caricare su ftp i dir perche ci sono un sacco di cast linkati
e cmq non credo di avere il permesso di divulgarli online..
grazie della tua pazienza
mi sta per scoppiare la testa!

Di: myllapikkulina | 26/09/2020 17:52:43


ciao e scusa il ritardo..
allora ho fatto velocemente 2 dir che puoi prelevare da qui:http://www.paolibo.com/loops.rar
la differenza tra i 2 sta semplicemente nel play dell'mp3 in quanto il primo importa il file nel cast e il secondo lo linka esternamente..
Spero che almeno in parte ti possa essere d'aiuto
ciao e buon lavoro

Di: paolibo | 26/09/2020 17:52:43