Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    8

    come posso gestire il tempo da ActionScript ???

    Salve a tutti,
    mi serve il vostro aiuto, stavo facendo il mio bel sito quando mi sono arenato, devo far muovere un oggetto diciamo da A a B, dove però A e B sono dei valori che cambiano, quindi non posso fare la classica timeline per gestire lo spostamento, su come farlo ho qualche idea, quello che non so proprio fare invece è gestire il tempo.
    Mi spiego meglio, diciamo che tale spostamento deve durare 4 secondi (quindi 100 fotogrammi), come posso gestire la cosa da Action Script?
    Tenete conto che nel frattempo possono accadere anche altre cose.
    Grazie anticipatamente a chi risponderà.

    cyBear

    p.s. edito per aggiungere che ho Flash 5

  2. #2
    Non so se ho capito bene cosa vuoi fare, intanto però vorrei fare una precisazione, ad un certo punto tu dici:
    diciamo che tale spostamento deve durare 4 secondi (quindi 100 fotogrammi),
    Questo è vero solo nel caso tu abbia impostato un frame rate (fps) di 25 fotogrammi al secondo.
    Perché se hai impostato un fps diverso, naturalmente cambia tutto.

    Comunque vediamo cosa puoi fare...
    L'oggetto di cui parli (quello che devi spostare da A a B) è sicuramente un'istanza di un simbolo in libreria, assicurati che come "comportamento" sia stato definito "movieclip".

    Per lo spostamento si agirà con un actionscript associato al movieclip (onClipEvent) che varierà (frame x frame) la posizione del clip stesso fino a fargli raggiungere la posizione finale.
    Per questo occorrerà:
    avere le coordinate di partenza
    avere le coordinate di arrivo
    calcolare gli spostamenti da farsi ad ogni frame con la formuletta:
    distanza = arrivo - partenza
    spostamento = distanza/fps

    Questo come logica.
    Ed ora un esempio, nel quale lo spostamento avviene solo in orizzontale (coordinata _x). Se lo spostamento deve avvenire anche in verticale basta duplicare le istruzioni inserendo le coordinate _y.

    Codice da associare al movieclip:
    codice:
    onClipEvent (load) {
    	iniz_x = 30;  // coord. X di partenza
    	fine_x = 440; // coord. X di arrivo
    	this._x = iniz_x; // posiziono il clip alla partenza
    	step = (fine_x-iniz_x)/12; //calcolo i pixel di avanzamento
            arrivato = false; // flag indicante se il clip è arrivato
    }
    onClipEvent (enterFrame) {
    	if (!arrivato) {
    		this._x += step;  // cambio la posizione del passo
    		if (this._x>=fine_x) {
                        arrivato = true;
    		}
    	}
    }
    Provalo!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    8
    Grazie mille mi metto subito al lavoro.

    Spero di non incasinarmi di nuovo, vorrei veder ultimata in breve almeno la grafica base del mio sito, prima che il caldo sciolga il mio entusiasmo...

    cyBear

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    8
    ho provato e funziona, ma mi sorge un dubbio, dov'è che stabilisco la durata del movimento, ovvero i famosi 100 fotogrammi per 4 sec. a 25 fps ?!?
    Cioè il mio problema non era fare il movimento ma farlo durare quello che dico io...
    Aiuto

  5. #5
    Per definire le caratteristiche del tuo filmato selezioni:
    Menu -> Modify -> Movie (vers. inglese)

    oppure
    Menu -> Elabora -> Documento (vers. italiana)

    una volta aperto il pannello imposti il frame rate a 25 (il default è 12)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    8
    Non mi sono spiegato, intendevo se invece di farlo durare 4 secondi volessi farlo durare 8 ?

  7. #7
    Allora fai così:
    1) determini il numero totale di frames necessari per la tua animazione:
    n.tot.frames = secondi * fps
    2) determini la distanza (in pixel) da percorrere ad ogni frame:
    step = distanza / n.tot.frames

    per il resto va già bene il codice che ti ho passato.

    Però sarei curioso di sapere cosa vuoi fare esattamente, perché forse ci sono strade migliori.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    8
    diciamo che il motivo per cui lo voglio sapere è più per cultura personale che per necessità, dato che quello che voglio fare funzionerebbe anche se non dura 4 secondi esatti, ma se mi sto facendo il sito è soprattutto per non arruginirmi e per prendere più mano con flash.
    Ho messo un "monitor" sul menù e ci volevo far passare una animazione, però per evitare che la cosa sia sempre uguale volevo randomare il movimento ed il tempo di passaggio.
    Quando si è trattato di temporizzare la cosa mi sono arenato.
    Comunque guarda, basta che accendi il "monitor" (quello sul sito ovviamente) e capirai, ah, non mi insultare per la futilità della cosa

    http://www.cybear.it/menu.htm

    p.s. il vero valore dei kb totali sul preload è 93k non 932k

  9. #9
    Ah! ho capito.
    Vorresti che l'orsetto si muovesse a velocità diverse, OK?
    Allora calcolarti il n° dei secondi "random" e poi utilizzare il codice che ti ho passato.

    La mia perplessità riguardava un'altro aspetto del problema e cioè che nonstante i calcoli fatti, difficilmente il tempo corrisponderà "esattamente" con quello impostato, dipende molto dalla velocità della CPU su cui gira il filmato.

    Faccio un esempio...
    Mettiamo che vogliamo un'esecuzione di 4 secondi di un'animazione con fps = 12.
    Allora:
    ftot = 12*4 => 48
    mettiamo che la distanza da percorrere dia di 480 pixel, per cui lo "step" sarà:
    step = 480 / ftot => 10 (10 pixel x frame)
    Difficilmente impiegherà esattamente 4 secondi x riprodurre l'animazione, a seconda della CPU del computer su cui gira, impiegherà sempre un tempo diverso, anzi anche sullo stesso PC in condizioni di utilizzo diverse i risultati saranno diversi.
    Chiaro?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    8
    ti ringrazio, farò qualcosa del genere, anche se la mia idea iniziale era di fare in modo che andasse più o meno uguale su tutti i computer (perlomeno da un certo livello in poi) però credo che per fare ciò dovrei controllare l'orologio interno e fare uno "step" ogni 25esimo di secondo, ma credo che sia troppo complicato, specie se inserito in un contesto dove il "video" è solo una parte...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.