Visualizzazione dei risultati da 1 a 8 su 8

Discussione: tween

  1. #1

    tween

    ho questo script associato ad un pulsante
    dove un mc (k) si sposta a y==50 ma voglio che arrivato a 50 yscale ==230
    il primo movimento funziona ma per eseguire yscale devo cliccare di nuovo sul pulsante dove sbaglio?

    on (release) {
    import mx.transitions.easing.*;
    import mx.transitions.*;
    var tw:Tween = new mx.transitions.Tween(this.k, "_y", mx.transitions.easing.Strong.easeOut, this.k._y, 50, 2, true);
    if (_root.k._y == 50) {
    var tw:Tween = new mx.transitions.Tween(this.k, "_yscale", mx.transitions.easing.Elastic.easeOut, this.k._yscale, 230, 8, true);
    }
    }
    Sei grandeeeeeeee
    http://www.vitoloweb.net

  2. #2

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    se ho capito bene, vuoi che le due animazioni si susseguano, quando finisce una, inizia l'altra... in tal caso hai impostato male il codice, in quel modo il codice viene eseguito solo ogni volta che clicchi, e visto che la prima volta il clip non si trova a 50, mentre la seconda sì... la seconda volta il codice dello spostamento viene ignorato e viene eseguito l'if che ora risulta true

    per fare invece quello che chiedi devi utilizzare un evento dedicato della classe Tween, onMotionFinished che verifica il momento in cui finisce la prima animazione e attiva la seconda

    codice:
    on (release) {
    	var tw:Tween = new mx.transitions.Tween(this.k, "_y", mx.transitions.easing.Strong.easeOut, this.k._y, 50, 2, true);
    	tw.onMotionFinished = function(){
    		var tw:Tween = new mx.transitions.Tween(this.k, "_yscale", mx.transitions.easing.Elastic.easeOut, this.k._yscale, 230, 8, true);
    	}
    }

  4. #4
    grazie appena posso provo

    Sei grandeeeeeeee
    http://www.vitoloweb.net

  5. #5
    nn funzione così

    on (release) {
    import mx.transitions.easing.*;
    import mx.transitions.*;
    var tw:Tween = new mx.transitions.Tween(this.k, "_y", mx.transitions.easing.Strong.easeOut, this.k._y, 50, 2, true);
    tw.onMotionFinished = function(){
    var tw:Tween = new mx.transitions.Tween(this.k, "_yscale", mx.transitions.easing.Elastic.easeOut, this.k._yscale, 230, 8, true);
    }
    }

    che devo modificare?
    Sei grandeeeeeeee
    http://www.vitoloweb.net

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mah, il codice sembra apposto... per scrupolo lo provo, ma a occhio...

    [edit] ah ecco... ho trovato l'errore


    on (release) {
    import mx.transitions.easing.*;
    import mx.transitions.*;
    var tw:Tween = new mx.transitions.Tween(this.k, "_y", mx.transitions.easing.Strong.easeOut, this.k._y, 50, 2, true);
    var path = this;
    tw.onMotionFinished = function(){
    var tw:Tween = new mx.transitions.Tween(path.k, "_yscale", mx.transitions.easing.Elastic.easeOut, this.k._yscale, 230, 8, true);
    }
    }


    prova ora

  7. #7


    var path = this;
    questo mancava, ma a cosa serve?

    ma dopo
    tw.onMotionFinished = function(){
    posso inserire anke un azione tipo loadmovie?

    cmq grazie (appena posso provo)
    ciao
    Sei grandeeeeeeee
    http://www.vitoloweb.net

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    scusa... ero un po' di fretta ieri e non potevo spiegarti...

    il problema è sempre quello dei percorsi, e in questo caso è un problema di scope, cito direttamente da wikipedia

    In informatica, e in particolare in programmazione, le regole di scope (o scope rules nella terminologia inglese) sono le regole che determinano la visibilità delle variabili di un programma. Questa espressione ha senso ovviamente solo nei linguaggi di programmazione che hanno un concetto di variabile, come quelli basati sul paradigma procedurale o object-oriented.

    Le regole di scope della maggior parte dei linguaggi di programmazione consentono di distinguere almeno due categorie di variabili:

    Variabili globali. Sono quelle visibili (ovvero referenziabili) da qualunque punto di un programma. L'uso eccessivo di variabili globali è in genere sconsigliato nella pratica dello sviluppo del software, poiché la loro presenza facilita l'occorrere di effetti collaterali che possono portare a errori di programmazione molto difficili da individuare e correggere.

    Variabili locali. Sono quelle visibili solo all'interno di un determinato sottoprogramma, o, nella maggior parte dei linguaggi strutturati, solo all'interno di un determinato blocco.
    in pratica gli eventi sono dei blocchi a sè e hanno uno "scope" diverso dall'esterno, quindi la proprietà this all'interno della funzione onMotionFinished equivale all'oggetto a cui la funzione è collegata (in questo caso è la Tween tw) ne consegue che richiamando nella seconda tween l'oggetto this.k è come se richiamassi tw.k che effettivamente non esiste e non è il movieclip da muovere
    perciò ecco il trucchetto... creo una variabile path che contiene il riferimento a this nello scope principale e poi la uso sotto per richiamare il clip k nella seconda Tween

    mi sono dilungato un po', ma almeno spero di aver chiarito almeno un pochino il concetto

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.