Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Creare lo spostamento di una forma tramite actionscript

    L'esempio è semplice: ho una forma realizzata in flash e voglio che essa si sposti sull'asse X 100 volte visualizzando a schermo la relativa animazione. Potrei creare l'animazione stesso tramite l'editor di flash, ma volendo passare per l'actionscript come dovrei fare? Cioè, io ho scritto una cosa del genere

    codice:
    var i:Number=0
    for (i=1; i<100; i++)
     {forma.x=i}
    il problema è che in questo modo si tratta di un calcolo che avviene in maniera "astratta" all'interno del processore.. sul lato pratico vedo semplicemente la forma passare dalla coordinata X=1 alla X=100 in maniera istantanea... A me serve invece che venga visualizzato a schermo ogni singolo cambiamento dell'asse X al fine di visualizzare l'animazione dello spostamento frame per frame

    Come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Quando parli di forma credo che voglia dire un movieclip perchè le forme non si possono spostare via codice in quanto non è possibile atribuirgli un nome istanza. Quindi dai nome istanza al movieclip "mc" e incolla questo nel primo frame.
    codice:
     mc._x=10
    i=0
    
    onEnterFrame = function()
    {
    	if(i<100)
    	{
    	mc._x+=2
    	}else if(i>=100){delete onEnterFrame}
    	
    	if(mc._x>300)
    	{mc._x=10,i++}
    	
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    As3
    codice:
    mc.x=10
    var i:Number=0
    mc.addEventListener(Event.ENTER_FRAME,sposta)
    function sposta(evento:Event):void
    {
    	
    	if(i<100)
    	{
    	mc.x+=2
    	}else if(i>=100){mc.removeEventListener(Event.ENTER_FRAME,sposta)}
    	
    	if(mc.x>300)
    	{mc.x=10,i++}
    	
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    uhm, non mi sono chiare due cose

    che significa questo?: mc.x+=2

    E come mai viene eseguito il controllo per stabilire se l'mc si trova su x=300?: if(mc.x>300)
    {mc.x=10,i++}



    edit: ah ok il primo punto l'ho capito... in pratica è una sorta di sintassi "abbreviata" per dire che mc.x deve incrementarsi di due... Non conoscendola io avrei scritto proprio mc.x=mc.x+2

    Non capivo perchè poi avevi scelto l'incremento di 2 anziché 1, presumo sia per una questione di velocità di riproduzione

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    mc.x+=2 questo incrementa la coordinata x+ se scrivi x- la decrementa e lo mc si sposta da destra a sinistra 2 e una variabile ora no ti so dire di preciso quale rapporto abbia con i f/s comunque più e grande più lo mc si sposta veloce, volendo al posto di due puoi mettere una variabile che dichiari prima ad esempio var direzione:Number=0 poi scrivi mc.x+=direzione poi con un pulsante puoi dare un valore a direzione sia positivo che negativo direzione=+2 o direzione=-2 di coseguenza lo mc si spostera a destra o a sinistra o puoi ad ogni click incrementare la velocità. Infine il controllo sulla posizione serve semplicemente per evitare che lo mc esca dallo stage quando raggiunge x=300 ritorna al punto di partenza e la var i viene incrementata di una unità il tutto si ripete sino a che i è minore di 100, quando i ha raggiunto 100 il filmato si interrompe.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da Stan
    Fai prima così
    http://www.greensock.com/
    e quali delle classi proposte useresti? Nel senso, io ho scaricato il file .rar e all'interno c'è una cartella demo_swf che mostra le varie operazioni compibili con questo Tween... Qual è quella che fa al mio caso?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Dovresti avere un swf che ti mostra tutti i movimenti che puoi fare con le tweenlite e che ti da tutti i parametri che devi usare nel tuo filmato.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da randi
    Infine il controllo sulla posizione serve semplicemente per evitare che lo mc esca dallo stage quando raggiunge x=300 ritorna al punto di partenza e la var i viene incrementata di una unità il tutto si ripete sino a che i è minore di 100, quando i ha raggiunto 100 il filmato si interrompe.
    Ma scusa, si presuppone che il mc non esca mai dallo stage in quanto programmato per arrivare massimo a x=100.. come fa ad arrivare a 300?
    Inoltre non capisco l'utilità della variabile i che io avevo utilizzato nel primo post unicament perchè ci trovavamo di fronte ad un ciclo for... Nel tuo caso non lo abbiamo utilizzato, quindi non dovrebbe servire a nulla i.

    Insomma, lo steso risultato si ottiene scrivendo semplicemente questo (testato)

    codice:
    mc.x=10
    mc.addEventListener(Event.ENTER_FRAME,sposta)
    function sposta(evento:Event):void
    {
    	
    	if(mc.x<100)
    	{
    	mc.x+=2
    	}else if(mc.x>=100)
    	 {mc.x=10}
    }

  10. #10
    Originariamente inviato da American
    e quali delle classi proposte useresti? Nel senso, io ho scaricato il file .rar e all'interno c'è una cartella demo_swf che mostra le varie operazioni compibili con questo Tween... Qual è quella che fa al mio caso?
    C'è la documentazione. La classe è praticamente la stessa, estesa.
    TweenNano è la più compatta, fa meno cose (ma per quello che devi fare tu già avanza), TweenMax ne fa tante altre.
    Poi c'è la classe TimeLine che permettono di mettere in sequenza le animazioni, ma non l'ho mai usata francamente. E la classe TweenPlugin che serve per animare altre proprietà (come i filtri tipo ombra, etc).
    Comunque basta che piazza la cartella com nella cartella del tuo progetto (o dove tiene le altre librerie). Il resto lo vedi dalla documentazione e gli esempi che trovi ad esempio qua
    http://www.greensock.com/tweenlite/

    Per spostare un clip sull'asse x

    codice:
    import com.greensock.*;
    
    TweenNano.to(tuoclip, 1, {_x: 200}) //AS2, sposta il clip da dove si trova a x 200, in un secondo)
    TweenNano.to(tuoclip, 1, {x: 200}) //AS3, sposta il clip da dove si trova a x 200, in un secondo)

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.