Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    15

    Gestione simultanea classi tween

    Ciao a tutti...

    Da sviluppatore in erba (molto in erba) sto smanettando con le classi tween in as 2.
    Il mio obiettivo è gestire simultaneamente le classi e al momento sto adoperandomi con
    la classe alpha.

    L'obiettivo che voglio raggiungere è questo:

    Abbiamo tre clip filmato istanziate come :"pippo", "pluto", "paperino"

    1 pippo deve apparire dal nulla con effetto alpha
    2 pluto è invisibile
    3 paperino è visibile

    Al passaggio del mouse su paperino, pluto diventa visibile e pippo va in alpha 20
    per realizzare il tutto ho sviluppato il seguente codice (commentato):

    //importazione classi tween
    import mx.transitions.Tween;
    import mx.transitions.easing.Regular;
    import mx.transitions.easing.Strong;
    import mx.transitions.easing.Back;
    import mx.transitions.easing.Elastic;
    import mx.transitions.easing.Bounce;
    import mx.transitions.easing.None;

    //faccio partire pluto con alfa 0
    pluto._alpha = 0;

    //faccio partire l'apparizione di pippo
    var __tween__:Tween = new Tween(pippo, "_alpha", Strong.easeOut, 0, 100, 2, true);

    //gestisco le azioni del clip pulsante paperino su pluto e pippo

    paperino.onRollOver = function() {
    //pippo va in alfa al 20
    var __tween__:Tween = new Tween(pippo, "_alpha", Strong.easeOut, 100, 20, 2, true);
    //pluto appare in contemporanea
    var __tween__:Tween = new Tween(pluto, "_alpha", Strong.easeOut, 0, 100, 4, true);

    };

    // gestisco il rollOut di paperino per l'azione inversa

    paperino.onRollOut = function() {
    //pippo da alfa 20 torna al 100
    var __tween__:Tween = new Tween(pippo, "_alpha", Strong.easeOut, 20, 100, 2, true);
    //pluto da alfa 100 torna a 0
    var __tween__:Tween = new Tween(pluto, "_alpha", Strong.easeOut, 100, 0, 2, true);
    };

    Il tutto sembrerebbe funzionare... ma funziona una volta! se ripeto il passaggio su paperino funziona il gioco ma poi in fase di rollOut pluto riappare da solo... potete aiutarmi?

    Non ce un modo per postare l'swf di esempio?

    Vi ringrazio anticipatamente...

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Prova così:

    Codice PHP:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;

    pluto._alpha 0;

    var 
    __tween__:Tween = new Tween(pippo"_alpha"Strong.easeOut01002true);

    paperino.onRollOver = function() {
    var 
    __tween__:Tween = new Tween(pippo"_alpha"Strong.easeOut100202true);
    var 
    __tween__:Tween = new Tween(pluto"_alpha"Strong.easeOut01002true);
    };
    paperino.onRollOut = function() {
    var 
    __tween__:Tween = new Tween(pippo"_alpha"Strong.easeOut201002true);
    var 
    __tween__:Tween = new Tween(pluto"_alpha"Strong.easeOut10002true);
    }; 
    L'ho testato diverse volte e non ha più fatto lo scherzo di prima, comunque a parte la riduzione delle righe di pacchetti importati grazie all'utilizzo dell'asterisco che permette di importare tutti i pacchetti di quella classe, il penultimo paramentro del RollOut di pluto sembra che generasse un conflitto.
    Quindi ho messo 2 nel RollOver come nel RollOut e sembra che l'errore non si verifichi più.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    15
    Adesso è una scheggia! grazie tante...

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    C'è una cosa nella classe Tween che non va e crea qualche problema se usata in maniera massiccia, succede quando si usa lo stesso nome per avviare tween differenti, il programma registra che si tratta di tween diverse, ma diciamo che il player non gli sta dietro e crea conflitto. La soluzione ideale sarebbe quella di usare nomi diversi per tween diverse, ma neanche questa è valida al 100%, per questo (oltre che per usare compilatori diversi da flash) da un po' ho abbandonato le tween in favore della libreria "caurina.transitions" (ce ne sono anche altre altrettanto valide, una su tutte quella di greensock che pare essere la migliore a livello prestazionale), che gestisce le transizioni attraverso la classe "singleton" Tweener, aiuta a risparmiare righe di codice e aumenta di parecchio le prestazioni e l'ottimizzazione, oltre ad evitare appunto i piccoli problemi che si verificano usando la classe Tween di Flash.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    15
    Molto interessante... so che con caurina è possibile ad esempio realizzare effetti specchiati e quant'altro. Se non erro funziona solo con as3 o anche con as2? In rete non ho trovato molto, saresti mica cosi gentile da indicarmi qualche guida o tutorial per cominciare a vedere come funziona?

    Ti ringrazio

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    15

    Come sincronizzare le classi Tween?

    Ciao a tutti...

    Volevo un consiglio da voi esperti...

    Ho tre clip e voglio che questi compaiano utilizzando la classe tween... per farlo ho usato il seguente codice:

    Codice PHP:
    var __tween__:Tween = new Tween(bt1"_alpha"Strong.easeOut01002true); 
    var 
    __tween__:Tween = new Tween(bt2"_alpha"Strong.easeOut01002true); 
    var 
    __tween__:Tween = new Tween(bt3"_alpha"Strong.easeOut01002true); 
    Ma così compaiono tutti e tre insieme...

    Se volessi dare un ordine di apparizione: 1,2,3 come devo modificare il codice? avete mica
    qualche tutorial da consigliarmi?

    Vi ringrazio anticipatamente...

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Unisco le discussioni giacché l'argomento è praticamente lo stesso.

    Originariamente inviato da Maros
    Molto interessante... so che con caurina è possibile ad esempio realizzare effetti specchiati e quant'altro. Se non erro funziona solo con as3 o anche con as2? In rete non ho trovato molto, saresti mica cosi gentile da indicarmi qualche guida o tutorial per cominciare a vedere come funziona?
    Le caurina ci sono sia per AS2 che per AS3 e funzionano praticamente allo stesso modo, ho scritto un articolo riassuntivo al proposito (molto veloce), trovi il link in firma se vuoi.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    15
    Scusami per la copia... pensavo che l'oggetto fosse più attinente!

    Ok vedo l'articolo, ma per il post precedente in merito a come sincronizzare le
    classi, è possibile senza utilizzare courina per il momento?

    Grazie!

  9. #9
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao Maros

    E' piuttosto improbabile capire le cose più complesse quando ancora non si conoscono quelle più semplici e intuitive.
    Ti prego di non interpretare queste parole come una critica personale ma considera che sono rivolte a chiunque, me compreso, si avvicini al mondo della programmazione in Flash e ActionScript con l'intento di raggiungere livelli di programmazione avanzati.

    Cerchiamo di capire il problema che proponi:
    Come puoi vedere dal primo codice di questo topic, la transazione sulla proprietà alpha parte in seguito all'evento RollOver e RollOut e nell'esempio proposto da And80, l'evento è attivato al click del mouse su un punto qualsiasi dello stage (...).

    Sembra evidente quindi che serve qualcosa che scateni l'evento nel momento voluto dall'utente o dal programmatore stesso del filmato in Flash.

    Per risolvere il tuo problema, che non è la gestione simultanea di diverse classi ma piuttosto come gestire la stessa classe Tween o Tweener in un ordine di tempo prestabilito (scusami la puntualizzazione ma il titolo del topic può far pensare si a quello che ti serve ma anche a qualcosa di molto diverso come appunto la gestione di diverse classi importate simultaneamente o contemporaneamente nello stesso file).

    Per realizzare quello che chiedi, ti serve creare una funzione basata sul tempo in modo che trascorso un tot di secondi, parta l'animazione o transazione alpha successiva.
    Ovviamente il tutto può essere fatto da codice con un "ascoltatore" che tiene traccia del tempo in esecuzione e a un determinato momento fa scattare l'evento-animazione o transazione richiesta ma per questa modalità, occorre uno studio approfondito su altre classi che non centrano nulla con la Tween o la Tweener caurina (vedi classe Timer di AS3 o funzione setInterval e altro per AS2).

    Il modo più semplice e intuitivo, senza necessariamente doversi addentrare nello studio di classi e metodi più o meno complessi, è posizionare il codice che "chiama" la Tween o Tweener in fotogrammi specifici, in modo che il FlashPlayer legga ed esegua il codice che già conosci solo nel momento richiesto, nè prima nè dopo.
    Si tratta quindi di organizzare la timeline del .fla in questo modo:


    Il clip che deve eseguire la Tween è posizionato in corrispondenza del fotogramma che contiene il suo codice, sfruttando quindi l'evento enterFrame della timeline principale ed eseguendo il codice nel momento voluto, nè prima nè dopo.
    Nell'esempio ho messo i 3 clip su livelli diversi per rendere più chiaro il concetto ma potresti anche utilizzare un solo livello con tutti i clip che appariranno ed eseguiranno il loro codice solo nel momento voluto.



    (Si comincia dalle piccole cose per arrivare alle grandi e quelle piccole o semplici, perchè sono semplici non significa che siano meno importanti e da non prendere in considerazione, il tutto aiuta a capire come ragiona Flash e quindi a trovare la miglior soluzione possibile di cui si può disporre, solo in seguito a una profonda e completa conoscenza del programma e di Tutte le sue possibilità.
    Sperare di bruciare le tappe, evitando studi approfonditi su ogni metodo e logiche di programmazione è una pura illusione che sfocia presto in rabbia e delusione o nella "migliore" delle ipotesi, crea pseudo "programmatori" da copia e incolla che non sanno nulla di quello che fanno e magari si vantano pure di essere sviluppatori in ActionScript).

    Mi scuso per la lunghezza del post e concludo con un personale ringraziamento a And80 per l'interessante articolo sulla Tweener caurina come alternativa alla Tween per evitare appunto "stranezze" come quella dimostrata nel codice iniziale di questo topic, difficilmente spiegabili in termini logici ma piuttosto da imputare veri e propri bug di programmazione.

    Un saluto a tutti

    Sleter

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Sleter
    (scusami la puntualizzazione ma il titolo del topic può far pensare si a quello che ti serve ma anche a qualcosa di molto diverso come appunto la gestione di diverse classi importate simultaneamente o contemporaneamente nello stesso file)
    Questa è colpa mia che ho lasciato il vecchio titolo quando ho unito, in effetti quello proposto da Maros era attinente.

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.