Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Ho creato un loop ma non riesco a fermarlo. Aiuto!!!

    Buonasera

    Con la seguente funzione ho creato un effetto simil loop:
    function LoopOfTheLoops(nameObj, propObj, tweenObj, beginObj, endObj, timeObj, secondsObj) {
    objGoLoop = new mx.transitions.Tween(nameObj, propObj, tweenObj, beginObj, endObj, timeObj, secondsObj);
    objGoLoop.onMotionStopped = function() {
    LoopOfTheLoops(nameObj, propObj, tweenObj, beginObj, endObj, timeObj, secondsObj);
    };
    }


    in questo modo, trasmettendo all'azione i parametri relativi all'istanza interessata, creo un movimento perpetuo da destra verso sinistra.
    Funziona perfettamente ma mi sono reso conto che la funzione continua anche quando l'istanza in questione non è più sullo stage, e se io la ricarico successivamente la funzione continua ad "operare" posizionano l'oggetto nel punto dove si troverebbe se non l'avessi mai tolto.
    Quale comando devo utilizzare per fermare la funzione una volta che l'oggetto non è più sullo stage? O, per grandi linee, come si fa ad interrompere l'esecuzione di una funzione ?

    Grazie
    <-- Fare. O non fare. Non c'è provare. -->

    www.yodastudio.com
    segui YODA Studio su facebook

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Penso che tu debba utilizzare il metodo stop() della classe Tween prima di eliminare il movieclip, e comunque non dovresti usare quel genere di recursività..

  3. #3
    Grazie mille per la risposta, ma a questo punt oscattano due domande d'obbligo:
    1 - come faccio ad utilizzare stop(); con la classe Tween?
    2 - hai metodi alternativi da proporre, dal momento che dici che non dovrei utilizzare questo script?

    Ancora grazie
    <-- Fare. O non fare. Non c'è provare. -->

    www.yodastudio.com
    segui YODA Studio su facebook

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    function LoopOfTheLoops(nameObj, propObj, tweenObj, beginObj, endObj, timeObj, secondsObj)
    {
    	var iniPoint:Number = nameObj[propObj];
    	var endPoint:Number = endObj;
    	var objGoLoop:Object = new mx.transitions.Tween(nameObj, propObj, tweenObj, beginObj, endObj, timeObj, secondsObj);
    	objGoLoop.onMotionFinished = function(Void):Void
    	{
    		this.start()
    	};
    	return objGoLoop;
    }
    per chiamarlo:

    codice:
    var test = LoopOfTheLoops(cubo, "_x", mx.transitions.easing.Regular.easeIn, 10, 100, 10);
    per fermarlo:

    codice:
    test.stop();

  5. #5
    Ho provato e (ovviamente) funziona.
    Ci sono tuttavia un paio di cose (forse qualcuna di più) che non capisco: primo, non mi è chiara l'utilità delle due variabili (iniPoint e endPoint) che si vanno a creare. Non capisco dove vengano utilizzate.
    Secondo, non riesco a capire l'utilizzo del comando void. La guida online cita quanto segue:
    void
    Disponibilità
    Flash Player 5.

    Uso
    void (expression)

    Descrizione
    Operatore; un operatore unario che ignora il valore expression e restituisce un valore non definito. L'operatore void viene spesso usato in operazioni di confronto con l'operatore == per verificare se un valore non è definito.


    Ma, in tutta sincerità, non capisco cosa voglia dire.
    Ultima cosa, qual'è la differenza tra onMotionStopped e onMotionFinished?
    Il resto mi è relativamente chiaro, o almeno intuisco cosa voglia dire.

    Grazie
    <-- Fare. O non fare. Non c'è provare. -->

    www.yodastudio.com
    segui YODA Studio su facebook

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    >primo, non mi è chiara l'utilità delle due variabili (iniPoint e endPoint)

    Nessuna, le puoi cancellare: si tratta di un refuso..
    (avevo iniziato lo script in un modo, poi ho cambiato idea e non ho cancellato).

    >Secondo, non riesco a capire l'utilizzo del comando void.

    Il significato di quel Void non è quello dell'operatore void (v minuscola) che c'è sulla guida. Serve ad indicare, nella sintassi dell'Actionscript 2, che la funzione non riceve parametri e non restituisce alcun valore.

    >qual'è la differenza tra onMotionStopped e onMotionFinished?

    Un evento viene scatenato quando il tween viene interrotto dall'utente, l'altro quando il tween completa da solo il propio corso..

  7. #7
    Tutto chiarissimo come sempre.
    L'unica cosa che mi lascia perplesso è sempre questo benedetto "void", nel senso che mi è capitato di usare variabili che non ricevessero e non restituissero valori, ma erano prive anche di questo comando.
    Mi chiedo dunque: è necessario inserirlo? e perchè? Eventualmente, cosa può accadere se non si usa?

    Grazie
    <-- Fare. O non fare. Non c'è provare. -->

    www.yodastudio.com
    segui YODA Studio su facebook

  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    >L'unica cosa che mi lascia perplesso è sempre questo
    >benedetto "void", nel senso che mi è capitato di usare
    >variabili che non ricevessero e non restituissero valori, ma
    >erano prive anche di questo comando.

    Normale, fino al flash mx 2004 non si usava

    >Mi chiedo dunque: è necessario inserirlo?

    no, non è necessario, anche se è buona norma

    >e perchè?

    Permette al compilatore di verificare di passare ad una funzione i parametri dello stesso tipo di dati richiesti dalla dichiarazione della funzione stessa, e così per i valori restituiti

    >Eventualmente, cosa può accadere se non si usa?

    niente, semplicemente il compilatore non verifica i tipi di dati, e quindi non ti può segnalare se stai utilizzando tipi di dati errati (ad esempio, una funzione si aspetta come parametro una stringa, e tu gli passi un array)

  9. #9
    Ok, tutto chiaro.

    Grazie e buonanotte.
    <-- Fare. O non fare. Non c'è provare. -->

    www.yodastudio.com
    segui YODA Studio su facebook

  10. #10
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Di niente..

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.