Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282

    problemi con la classe Timer

    Ciao a tutti...in particolare a And80 che saluto.
    Volevo chiedere un piccolo aiutino.
    Tempo fa And mi ha aiutato con la classe Timer, il suo codice va benissimo...
    che è il seguente:

    Codice PHP:
    import fl.transitions.*; 
    import fl.transitions.easing.*;  
    simb1.visible=false
    simb2.visible=false
    simb3.visible=false
    simb4.visible=false
    simb5.visible=false
    simb6.visible=false
    simb7.visible=false;          
    var 
    simb:MovieClip;      
    movimento (simb1);     
    var 
    tim:Timer = new Timer (2006);     
    tim.addEventListener(TimerEvent.TIMERrunFunc);     
    tim.start();     
    function 
    runFunc (e:TimerEvent)      
    {         
        
    simb this ["simb" + (e.target.currentCount+1)];         
        
    simb.visible=false;         
        
    movimento (simb);     
    }          
    function 
    movimento(simb:MovieClip)     
    {         
         var 
    img:MovieClip=new MovieClip();         
         var 
    filtro:uint;         
         
    img=simb;              
         
    TransitionManager.start(img, {type:Fadedirection:Transition.INduration:0.5easing:None.easeOut});          

    ora i miei piccoli problemi sono 2

    1) come faccio ad applicare l'invisibilità a diversi simboli per non ripetere il codice come nelle
    prime righe sopra? con gli array ma comunque devo scrivere i nomi di tutti i simboli ed è
    perdita di tempo. Non esiste un codice tipo: simb*.visible ? o qualcosa di simile?

    2) che è il vero problema...è se io volessi dividere in 2 gruppi i simboli (quelli nelle primi righe) in modo da dare al secondo gruppo un diverso movimento oppure aumentare la velocità di uscita degli oggetti quindi diminuire il tempo di attesa e quindi il timer...
    inserisco all'interno del codice un codice simile a quello utilizzato con variabili diverse ma alla fine mi da l'errore e non trova alcuni ogetti (errore ogetto null) e non mi dice cosa non trova...
    come posso aggiustare il codice?
    spero di aver descritto al meglio il mio problema...
    ciao a tutti.
    Tony

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Beh intanto puoi semplificare il primo passaggio usando un ciclo. L'array serve solo ad evitarti errori nella ricerca degli elementi, sennò devi stare a usare getChildAt o getChildByName e son fastidiosi da usare, anche se in questo caso mi sembra chiaro che i simboli si trovino su root, quindi potresti fare anche con un ciclo:

    Codice PHP:
    for (var i:uint=1i<=7i++) {
        
    root["simb"+i].visible false;

    Per la seconda cosa, ancora una volta ti suggerirei gli array, in questo caso potresti usarne 2, solo che se non ti piace utilizzarli allora l'unica è usare due cicli come quello scritto sopra, basta farli partire da un indice diverso (es. il primo va da 1 a 4 e il secondo va da 5 a 7).

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    grazie And....
    ma se io volessi che non appena finisce il primo ciclo comincia il secondo con velocità diversa?
    è qui mi da l'errore null...
    non vorrei creare una funziona timer dentro un'altra timer ecc. ecc.
    finirò l'anno prossimo a scrivere...
    dopo i primi 3 simboli in uscita vorrei che gli altri 4 uscissero sempre in sequenza ma con una velocità di uscita piu' rapida...è qui che mi blocco...
    grazie ancora
    Tony

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non ho ben presente (non ricordo) perchè usi la classe Timer, ma ti consiglio in un caso come questo di evitare proprio di usare la classe TransitionManager. Devi fare un semplice fade, è decisamente più conveniente usare una classe esterna come Tweener, su cui puoi anche decidere il delay per cui una determinata animazione deve essere eseguita.

    Poniamo questi tuoi 7 clip e poniamo che vogliamo che i primi tre facciano il fade uno dietro l'altro a distanza di 200 millisecondi e gli altri quattro lo facciano a 300 millisecondi di distanza, con un codice così vai alla grande:

    Codice PHP:
    import caurina.transitions.Tweener;
    var 
    simb:Array = [];
    for (var 
    i:uint=1i<=7i++) {
        var 
    this["simb"+i];
        
    s.alpha 0;
        
    simb.push (s);
    }
    simb.forEach (foreach);
    var 
    cont:uint;
    function foreach (
    e:*, i:uinta:Array) {
        if (
    3) {
            
    cont 0.2*i;
            
    Tweener.addTween (e, {alpha:1delay:0.2*itime:0.5transition:"easeoutexpo"});
        } else {
            
    Tweener.addTween (e, {alpha:1delay:cont+(0.1*i), time:0.5transition:"easeoutexpo"});
        }

    Ora, bisognerebbe vederlo applicato, ma dovrebbe essere corretto già così.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    Grazie And...come al solito mi salvi sempre :-D

    comandi push l'avevo visto ma non so a cosa serve

    forEach???
    dove trovo un pò di materiale per vedere questi comandi e come vengono utilizzati e applicati?

    grazie di tutto

    ciaooo
    Tony

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    push c'è da sempre su AS e serve per aggiungere un elemento all'array
    mentre forEach è stato introdotto in AS3 e serve per impostare un'interazione sull'array senza dover scrivere noi il ciclo.

    Vedi ad esempio:

    Codice PHP:
    var test:Array = ["test1""test2""test3""test4"];
    test.forEach(callback);
    function 
    callback (element:*, index:uint, array:Array) {
        
    trace(element);
        
    trace(element is String);
        
    trace(index);

    La funzione di callback deve sempre contenere quei tre parametri che corrispondono rispettivamente all'elemento letto al momento dall'array, all'indice che gli appartiene e l'ultimo, sempre uguale, corrisponde all'array che ha generato il forEach. La funzione la puoi chiamare come vuoi e anche i nomi dei parametri possono avere il nome che preferisci, io ad esempio uso sempre solo l'iniziale - function prova (e,i,a) - quindi ricorda che l'unica cosa da fare è di mettere quei parametri.

    Il materiale come al solito lo trovi, decisamente esplicativo, nella guida di flash.

    [edit] Giusto per conoscenza, forEach non è l'unica funzione aggiunta alla classe Array, ce ne sono un altro paio interessanti (every, filter, map e some) che aiutano a gestire gli array in maniera più metodica senza ricorrere ogni volta a cicli creati ad hoc.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    grazie per l'ennesimo aiuto And...

    farò delle prove per imparare questi comandi
    Ciao
    TOny

  8. #8
    Salve and80
    vorrei interoompere lo scorrere della linea temporale per diciamo 10 secondi.

    ho provato con:

    stop();
    setTimeout(10000,play);

    ma funziona solo in parte, ho provato quindi con l'oggetto timer:

    stop();
    var tim:Timer = new Timer (10000, 10000);
    tim.addEventListener(TimerEvent.TIMER, play);

    ma così non funziona affatto....

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Hai sbagliato l'assegnazione dei parametri, il primo è il nome della funzione da eseguire e il secondo è il tempo in millisecondi

    stop();
    setTimeout(play,10000);

  10. #10
    grazie and,
    (sei parente di or?)

    ho solo postato male, nel .fla ho scritto correttamente.

    Il metodo setTimeout non è affidabile nel mio caso, uso as 3.0 e dopo il rollover il timer non è costante.

    ho provato con l'oggetto timer ma neppure quello era soddisfacente, alla fine ho inserito 240 frame statici,

    pensi sia troppo orrenda come soluzione?

    Grazie ancora
    Luca

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.