• User

    [Risolto] problema su slideshow con settimeout e gotoandplay

    ciao a tutti ho bisogno di un aiuto.
    non potendo per altri motivi caricare il mio flash cerchero di spiegarvi cos'è e come funziona (o dovrebbe funzionare).
    Banalmente si tratta di un asse su cui sono montate 15 immagini che in modo automatico devono aprire l'ingrandimento della foto cn una descrizione. qualora l'utente pero volesse decidere autonomante quale immagine aprire puo farlo, la stessa resterà aperta n secondi per poi ciclare con le successive (facendo ripartire insomma il ciclo che si avrebbe senza compiere nessun'azione).
    per nn appesantire troppo di frame vuoti e per permettermi eventuale modifica rapida in seguito ho impostato ad ogni anteprima un actionscript che faccia attendere gli n secondi prima di andare a visualizzare il frame successivo che contiene la nuova anteprima cn descrizione:

    
    this.stop(); 
    setTimeout(this, "nextFrame", 7000); 
    

    L'anteprima con apertura chiusura apertura automatica funziona correttamente.

    chiaramente sotto alle anteprime restano i bottoni che come ho detto devono poter essere utilizzati in qualunque momento. ad ognuno di essi è associato un gotoandplay che va al frame di anteprima (che sulla scena 1 è un solo kf con un clip di 10 frame) dalla quale dovrebbe ripartire il ciclo (scusate se mi ripeto)

    ebbene, non capisco il motivo e la dinamica ma si incasina un po l'swf a questo punto. se clicco per es il primo bottone il ciclo parte e prosegue correttamente, ma se clicco ad es il 5 il ciclo prende velocità e decisamente nn aspetta più i 7 secondi impostati dal setTimeout.

    Considerato che andare a inserire frame vuoti al posto dell'actionscript che vi ho quotato prima sarebbe oltre che un fallimento, un'enorme perdita di tempo che purtroppo nn ho... mi sapete dare qualche suggerimento idea consiglio?

    è piuttosto importante.. se nn sono stata chiara chiedetemelo.. grazie mille
    fra


  • Super User

    Ciao franc3s e benvenuta nel forum GT 🙂

    Prova a mettere in ogni anteprima:

    
    this.stop(); 
    clearTimeout(this);
    setTimeout(this, "nextFrame", 7000);
    
    

  • User

    Ciao Flep e grazie per la risposta,

    ho appena corretto e testato. Non sembra cambiare nulla. Quel che è peggio è che il comportamento è assolutamente casuale (clicco sulla 7 e crasha le trandizioni, riclicco e funziona normale e crasha dalla 9 per dire)..

    :arrabbiato:


  • Super User

    Il problema è dato che se ad esempio parte l'anteprima automatica, tra una foto e l' altra ci sono 7 secondi.
    Se tu clicchi un bottone diciamo dopo 3 secondi, non fermi l' intervallo, per cui hai cliccato e ti va all' anteprima cliccata ma dopo 4 secondi ( tempo rimasto) hai sempre il primo intervallo che è attivo.... in più sul nuovo frame in cui sei andata ne crei un altro di intervallo.

    Dovresti usare una variabile globale e poi il setInterval.
    Usi il clearInterval ogni volta che clicchi un bottone e poi devi fare ripartire l' intervallo.

    Di solito queste applicazioni con timer vengono sviluppate in classi.
    Sembra banale ma ci sono diverse logiche condizionali dietro a tutto ciò.

    In più se provi a fare la prova dello scemo ( clicchi a destra e sinistra ogni bottone velocemente ed in modo casuale, di sicuro va tutto in palla ).

    Le slide show bisogna dirigerle completamente da Actionscript... c'è poco da fare... :bho:


  • User

    Immaginavo qlc di questo tipo, anche se il tempo non aumenta, ma diminuisce..
    In realtà però, temo di doverti chiedere ancora qualcosa.. per es. se puoi farmi un esempio o se hai il tempo di una spiegazione più dettagliata visto che no mastico l'actionscript al punto di seguirti del tutto.. 😞


  • Super User

    Potresti fare anche in un altro modo.

    Invece di usare tutti keyframes singoli per ogni anteprima, puoi creare una transizione sulla timeline tra un' immagine e l' altra.

    Fai partire la timeline e lei visualizza la slideshow.
    Al click di un bottone, controlli il _currentFrame e in base a quello decidi dove spsotare la timeline.
    Per un temporizzatore è davvero dura farti un esempio.
    Se vuoi sul mio blog ci sono un paio di slideshow già pronte con i file sorgenti ma sono per flash cs3 ed actionscript 3.0 .


  • User

    Tenderei a lasciare questa strada come ultima spiaggia, un po perchè spero ancora di risolvere utilizzando il lavoro fatto fino ad ora. Un po' perchè cmq dovrei rifare tutto (deadline ore 14 di domani, tempo ultimo per rifare tt in tempo).. ora ci ragiono un attimo..


  • User

    E' un po' un casino rimettermici da capo. A costo di sembrare veramente scortese..non è che hai il tempo di fornirmi un flaino-ino (TM :D) cn gli action in modo che possa vedere di lavorarci sopra?
    Nn posso usare as3 purtroppo


  • Super User

    Te la sto facendo ... 😉


  • User

    sei un tesoro! image
    (e io cmq mi sono portata il lavoro a casa.. ma prima devo consegnare la tesina x un esame, sigh sic)


  • Super User

    Eccola:
    Non spaventarti del codice 🙂

    Metti le foto al posto delle forme.
    Utilizza delle MovieClip come bottoni e non dei bottoni perchè la classe Button di Actionscript non è dinamica e non si possono assegnare delle proprietà in runtime.

    Cambia il 3000 nel file Main.as con 7000 😉

    Per problemi sono quì.


  • Super User

    ops... chiedo scusa. Mi son dimenticato di salvare per Flash 8.

    Ecco :


  • User

    grazie mille Flep,
    ora mi metto sulla mia tesina e poi vedo come adattare il mio originale, c'è un po di riordino da fare. inoltre devo chiedere se possiamo mettere su anche l'as senza che nessuno me la meni (clienti rompic..).
    ti faccio sapere e intanto ancora grazie!


  • Super User

    Cosa intendi per mettere su anche l' as ?


  • User

    che sono grulla. pensavo di dover caricare anche l'as, invece no. nn ne ho mai usati esterni. sic. :imb:


  • Super User

    Non devi caricare il file as 🙂 Una volta pubblicato l'swf , la classe Main.as viene compilata al suo interno, per cui basta che carichi l' swf sul server.


  • User

    sì me ne sono accorta poco dopo aver inviato e nn in tempo x modificare 😄 che figure!
    bè a presto, ti faccio sapere!


  • User

    Perfetto Flep, sembra funzionare, cioè funziona!!
    Il tuo codice è decisamente più funzionale del mio. Grazie ancora.