Director: animazioni di entrata/uscita.

Di: Jabba the Hutt | 26/09/2020 17:27:49
Vorrei realizzare un pannello di controllo per un filmato (play stop etc) ma che non fosse sempre presente, mi spiego meglio, vorrei che comparisse con un'animazione tipo uscita dal basso solo quando si entra nella sezione apposita, fin qui nessun problema la realizzerei con director, il mio problema è fare l'animazione contraria cioè la discesa o la scomparsa, tenendo presente che nello stesso momento a video sono presenti tutti gli altri tasti per le diverse sezioni, quindi cliccando su uno qualsiasi dei pulsanti il pannello dovrebbe rientrare e andare alla sezione specifica. Esiste uno script che mi permette di controllare le animazioni realizzate con director stesso?
Grazie

Risposte



L'animazione del tuo pannello di controllo sarà caratterizzata da un tot numero di frame, di cui la metà per l'entrata e i restanti per l'uscita.
Se consideriamo per ipotesi l'animazione d'entrata di 10 frame, sul decimo metterai un loop per far rimanere presente il pannello, quando clicchi su uno dei tuoi pulsanti, manderai in play la testina in modo da far scomparire il tuo pannello, sull'ultimo frame dell'animazione di uscita (quindi l'ultimo frame dell'animazione completa) metterai uno script del tipo:
global destinazione
go to frame destinazione
ovviamente su ogni pulsante dovrai mettere uno script per controllare l'attuale posizione e se corrisponde a quella con il pannello di controllo allora setterai la variabile globale e manderai in play la testina.

Di: goku | 26/09/2020 17:27:49

Mille grazie

Perfetto e molto intelligente, facendo da solo avrei optato di sicuro per una cosa poco elegante e macchinosa...

Di: Jabba the Hutt | 26/09/2020 17:28:49


In quale modo sarebbe possibile inserire un controllo a scomparsa (tipo il volume) che sia raggiungibile in qualsiasi momento?

Di: Jabba the Hutt | 26/09/2020 17:28:49

Menù a scomparsa

Quando il mouse entra (mouseEnter) nella zona sensibile che hai deciso, allora fai eseguire l'animazione di entrata, oppure rendi visibile lo sprite sullo stage. In questo secondo caso usi: member(Numero_Cast_Member).visible=TRUE. Il member che rendi visibile chiaramente è quello del pannello o menu. Quando il mouse esce (mouseLeave) usi member(Numero_Cast_Member).visible=FALSE e quindi diventerà invisibile e non cliccabile.
In alternativa puoi usare l'evento on mouseWithin (che avviene quando il mouse rimane sopra la zona sensibile).
Se invece ti vuoi riferire allo Sprite specifico invece del Cast member, userai:
sprite(Numero_Canale_dello_Sprite).visible=False
Esempio:
sprite(1).visible=False
-- con questo codice, il primo canale dello Score diventerà invisibile.

Di: Pablito | 26/09/2020 17:28:49


Tuttavia però questa tecnica non mi permetterebbe di inserire un pannello a scomparsa con animazione di entrata ed uscita come quello che ho realizzato grazie all'aiuto di Goku.

Di: Jabba the Hutt | 26/09/2020 17:28:49


E invece si, perché invece di usare l'evento on mouseLeave per rendere invisibile il canale, lo usi per far partire l'animazione di uscita. Ad esempio:
global destinazione
on mouseLeave me
go to frame destinazione
end

Di: Pablito | 26/09/2020 17:28:49


Ora credo di aver capito, così facendo dovrei ripetere le due animazioni (entrata e uscita) per ogni "stop"

Di: Jabba the Hutt | 26/09/2020 17:28:49


Che significa per ogni stop? È un telegramma?
Sulla stessa area sensibile associ entrambi i behaviour:
on mouseWithin me
go to frame ENTRATA
end
on mouseLeave me
go to frame USCITA
end
-- Dove entrata e uscita rappresentano il primo frame sulla Timeline delle rispettive due animazioni.
-- Quindi sarà: global entrata, uscita
Naturalmente puoi usare le Label, oppure il numero del Frame dove deve andare la testina di riproduzione.
Nel caso di due label che chiamerai entrata e uscita, sarà così:
on mouseWithin me
go to frame "ENTRATA"
end
on mouseLeave me
go to frame "USCITA"
end
L'alternativa un più rigida è senza dubbio quella numerica:
on mouseWithin me
go to frame 15
end
on mouseLeave me
go to frame 85
end
Girando un po' nella sezione di condivisione spontanea della conoscenza per Director,
si trovano le nozioni più importanti per comprendersi.
http://www.001design.it/forum_italiano/forums.php?id=31
http://www.001design.it/forum_italiano/thread.php?id=71

Di: Pablito | 26/09/2020 17:28:49


Jabba stop
chiede perdono stop
per gergo stop
poco adeguato stop :)
Volevo intendere che per ogni sezione del movie
(intendo tra un marcatore e l'altro o tra un "go to the frame" e l'altro per intenderci) devo inserire i due sprite per l'animazioni di entrata ed uscita.
Scusami

Di: Jabba the Hutt | 26/09/2020 17:29:49


Prego Jabba,
l'importante è imparare i fondamentali prima di postare nel forum, altrimenti diventa complicatissimo capirsi.
Ad esempio, non ho capito perché adesso devi inserire questi due sprite... il quesito non è quello di gestire le animazioni di entrata/uscita di un Movie Director?
Ora che durante l'esecuzione delle animazioni compaiano più o meno sprite, poco importa... l'importante è che le animazioni partano e si fermano quando vogliamo noi. Per questo si usano gli eventi (on mouseEnter, ecc.)
Fammi sapere se hai risolto il problema.

Di: Pablito | 26/09/2020 17:29:49


Diciamo che stiamo creando un cd con delle diverse sezioni e ad ognuna assegnamo un marcatore, quindi quando saremo su una sezione specifica la testina si troverà, come mi insegni, su un "go to the frame" con tutti gli sprite che mi servono, ipotizziamo che il controlla del volume si trovi su una linguetta a scomparsa e che l'animazione di entrata sia di 10 frame e lo stesso quella di uscita, per fare in modo che l'animazione avvenga in quella sezione ho bisogno che quando la testina si muove sull'animazione al contempo siano presenti gli stessi sprite che compongono quella sezione, quindi gli sprite che compongono ogni sezione dovranno essere lunghi 20 e dovrò ripetere i 20 dell'animazione per ogni sezione.
Oppure c'è un metodo più pratico che non conosco?

Di: Jabba the Hutt | 26/09/2020 17:29:49

Modificare contemporaneamente la durata di tanti sprite.

Certo, gli sprite "devono" (se il progetto lo prevede) essere presenti o visibili durante le animazioni.
Il metodo pratico per allungare tutti gli sprite è:
- Premesso che tu abbia inserito 1 Sprite su 1 Canale dello Score (significa che 10 sprite occuperanno 10 canali).
- Seleziona con il mouse tutti i canali dello score dove ci sono gli sprite da allungare o accorciare.
- Guarda il Property Inspector > menù Sprite (che già dovresti avere avanti)
- Dove c'è scritto Start Frame e End, puoi impostare il frame iniziale e finale di tutti gli Sprite selezionati.
Se i canali da modificare contemporaneamente sono tantissimi, aspetta alcuni secondi (se il pc è potente) che Director sta lavorando per te. E con questo si risparmiano ore di lavoro e di stress.
In verità queste cose le avevo già scritte qui:
http://www.001design.it/forum_italiano/thread.php?id=63
Director base: score, animazione, fotogramma chiave e di chiusura sprite.
Buon lavoro

Di: Pablito | 26/09/2020 17:29:49

animazioni con lingo

Una possibilità l'hai trovata da solo,
un'alternativa è inserire il tuo pannello con il pulsante su un unico frame, ovviamente su vari livelli, ed estendili per tutti i frame che occore in modo che sia presente in tutte le tue sezioni, a questo punto se vuoi che il pannello compaia e scompaia con uno spostamento, quando il mouse passerà su un'area specifica del tuo movie, credo la parte inferiore, visto che tutto quello che si trova sullo stage ha delle cordinate specifiche, compresa la posizione del mouse, basta verificare quando il mouse si trovi nell'area da te voluta, allora sempre tramite lingo lo farai muovere, lo stesso discorso vale per quanto il mouse esce dall'area.
Un consiglio per muovere insieme tutti gli sprite interessati per il pannello puoi usare un ciclo.

Di: goku | 26/09/2020 17:29:49

lingo per muovere gli sprite

Questo è un semplice script per creare il tuo pannello di controllo a scomparsa:
on exitFrame me
if _mouse.mouseV>200 and _mouse.mouseH>0 then
if sprite(1).locV>210 then
repeat with i=1 to 2
sprite(i).locV = sprite(i).locV - 2
end repeat
end if
else
if sprite(1).locV<260 then
repeat with i=1 to 2
sprite(i).locV = sprite(i).locV + 2
end repeat
end if
end if
go to the frame
end
Considera che io ho mosso due quadratini e lo stage era 320x240!
Ovviamente tu cambierai le coordinate e gli sprite in base al tuo Stage ecc.
C'è anche un modo forse + semplice che ti evita di comandare diversi sprite, cioè l'utilizzo di un filmloop.

Di: goku | 26/09/2020 17:29:49


Grazie mille, ora inizio con le prove.

Di: Jabba the Hutt | 26/09/2020 17:29:49