• User

    Timer che ogni tot secondi cambia movieclip

    Ciao a tutti!!
    Scusate se scoccio di nuovo, ma ho bisogno ancora del vostro aiuto!
    Il problema è questo:
    devo cambiare movieclip da visualizzare ogni 45 secondi.
    Ho messo il seguente codice sul primo frame in cui si trova
    il movieclip:

    var mc:Array = new Array();
    mc[0] = new SemaforoRosso;
    mc[1] = new SemaforoVerde;
    var timer:Timer = new Timer (45000,0);
    timer.addEventListener(TimerEvent.TIMER, cambiaSemaforo);
    timer.start();
    function cambiaSemaforo(TimerEvent):void
    {
    SemaforoRosso.visible=true;
    SemaforoVerde.visible=false;
    }

    Il compilatore mi dà i seguenti errori:
    1046: Tipo non trovato o non è una costante della fase di compilazione: Timer.
    1180: Chiamata al metodo non definito Timer.
    1120: Accesso alla proprietà non definita TimerEvent.

    Dove sbaglio?
    Grazie!!!


  • Super User

    Ciao melaniaflash, cosi non da più qull'errore, ma il semaforo cambia solo una volta ci vorrebbe un enterFrame, o a cosa stavi pensando, per rendere ciclico il codice?

    
    var mc:Array = new Array();
    //mc[0] = new SemaforoRosso;
    //mc[1] = new SemaforoVerde;
    mc = ["SemaforoRosso", "SemaforoVerde"];
    
    var timer:Timer = new Timer (45000,0);
    timer.addEventListener(TimerEvent.TIMER, cambiaSemaforo);
    timer.start();
    function cambiaSemaforo(evt:TimerEvent):void
    {
    SemaforoRosso.visible=true;
    SemaforoVerde.visible=false;
    
    }
    
    

  • User

    Ciao Nhatan! Grazie per la tua risposta!Sei sempre disposto ad aiutarmi!Grazie, grazie! 🙂
    Ora provo il codice!
    Lo zero in Timer (45000, 0) mi pare coglia dire infinito?
    Non dò già così la ripetizione del codice?
    Altrimenti come di fa con enterFrame?


  • User

    Ps. Il codice ancora non va purtroppo.
    Mi dà errore 1046: Tipo non trovato o non è una costante della fase di compilazione: TimerEvent.
    Il codice che mi hai corretto è AS2?A me serve AS3..o forse sbaglio nel fla..Ti spiego la struttura del fla:
    ho un movieclip (VerdePage) animato tramite la timeline su vari livelli:

    • livello background
    • vari livelli con automobili che ho animato tramite interpolazioni
    • livello con movieclip semaforo rosso
    • livello con movieclip semaforo verde

    Il codice lo inserisco ne primo frame sul livello semaforo rosso.
    E' giusto?
    Grazie!


  • Super User

    Non è as2 è sempre il tuo codice ho solo cambiato modo di popolare l'Array, quello che non capisco è come dovrebbe fare a alternare i colori, daccordo che il timer conta all'infinito me nella funzione c'è sempre rosso=true verde=false,non capisco come dovrebbe fare lo switch.


  • Super User

    Secondo me è necessaria una condizione if nella funzione tipo quello che ho fatto quà. http://www.nhatan.altervista.org/esempio.html


  • User

    Ciao Nhatan! Ho appena visto il tuo esempio e l'obiettivo che devo raggiungere nel mio file è quello..ovviamente con più secondi tra rosso e verde..Comunque ora lo trasporto nel mio file e vediamo cosa succede!Ti ringrazio per la disponibilità!E ti tengo aggiornato..e sicuramente ti scoccerò ancora!;) Grazie grazie!Buona serata!


  • User

    Ciao Nhatan!
    Spero puoi aiutarmi..ho provato a inserire il codice del tuo semaforo nel mio
    file --cambiando opportunamente i nomi di istanza -- ma purtroppo non va..non so davvero dove sto sbagliando.. 😮
    Potresti dare un'occhiata al mio fla? Lo puoi raggiungere dalla frontpage del mio sito web straedu.altervista.org E' nell'unico articolo pubblicato!
    Grazie mille!!


  • Super User

    Ciao melaniaflash, ho dato uno sguardo al tuo bellissimo filmato, però purtroppo così il mio codice non può funzionare, bisognerebbe togliere il semaforo dalla time line dove ci sono le interpolazioni, portarlo fuori dal clip filmato contenente il tutto, inoltre bisognerebbe cambiare anche il semaforo, nel senso che invece che avere un livello verde e uno rosso, ci vuole un semaforo con il primo frame verde e il secondo della sua linea temporale rosso, un po come quegli switch per la musica on/off, non so se hai presente. In pratica bisognerebbe fare così http://www.nhatan.altervista.org/esempio.html


  • User

    Ciao Nhatan!Ho visto l'esempio che hai fatto..è proprio quello che mi serve!Come posso visualizzare il fla e il codice che hai utilizzato per ottenere questo risultato?


  • Super User

  • User

    Ciao Nhatan!Grazie!Ho scaricato il sorgente e ho sistemato il mio fla..ma purtroppo non funziona.. 😮
    Il problema credo sia questo: il mio fla dipende da una classe (che io ho chiamato attraversare)..quindi quando compilo il fla con quello script sulla timeline mi dice che il codice non fa parte della document class..come posso risolvere?
    L'unica soluzione che mi è venuta in mente è quella di fare la pagina in un fla distinto da quello principale e poi richiamarla dal fla principale quando serve..ma come si fa???


  • Super User

    Come si fa a caricare un swf esterno?


  • User

    Ehm..non lo so..😊


  • Super User

    Così

    
    var loader:Loader = new Loader();;
    
    pulsante_btn.addEventListener(MouseEvent.CLICK, onClick);
    
    function onClick(event:MouseEvent):void 
    {    
        loader.load(new URLRequest("nome.swf"))
        }
    addChild(loader)
    //loader.x = 100;
    //loader.y = 100;
        
    

  • User

    Ciao Nhatan!
    Grazie per il codice per caricare swf esterni..
    Comunque ho adottato un'altra soluzione..
    il compilatore non mi dà errori :vai: ma il bottone
    non mi compie l'azione che deve..:bho:
    sai dirmi dove sbaglio?

    function onStradinaPulsanteClick (event:MouseEvent):void
    {
    if (verdePage.semaforoVerde.visible==true)

            {
                addChild(attraversaVerdePage);
                removeChild(verdePage);
                (attraversaVerdePage).y=0,(attraversaVerdePage).x=0;
            }
            else
            {
                addChild(attraversaRossoPage);
                removeChild(verdePage);
                (attraversaRossoPage).y=0,(attraversaRossoPage).x=0;
            }    
        }
        function onStradinaPulsanteRossoClick (event:MouseEvent):void
        {
            if (rossoPage.semaforoRosso.visible==true)
    
            {
                addChild(attraversaRossoPage);
                removeChild(rossoPage);
                (attraversaRossoPage).y=0,(attraversaRossoPage).x=0;
            }
            else
            {
                addChild(attraversaVerdePage);
                removeChild(rossoPage);
                (attraversaVerdePage).y=0,(attraversaVerdePage).x=0;
            }    
    

    Grazieee!!!


  • Super User

    Non vorrei dire sciochezze, ma ho provato anch'io ad utlizzare la proprieta visible all'interno di una condizione if, ma non viene rilevata, per questo che nell'esempio che avevo fatto io mi ero basato sui currentFrame del mc semaforo. Mi sembra, ma magari sbaglio, che flash non riesca a rilevare se un clip filmato sia visibile o invisibile e agire di conseguenza.


  • User

    Ciao Nhatan!Io leggendo la documentazione di adobe as3 programming credo di aver letto da qualche parte che è possibile usare visible..ma forse mi sbaglio..A questo punto visto che i tempi stringono userò il codice per caricare l'sfw esterno!;)Grazie mille per l'aiuto!!A risentirci!


  • Super User

    Guarda che non sono sicuro, dico solo che nelle prove che ho fatto io la propietà visible nella condizione if veniva ignorata, ma non essendo un mago non lo do per certo, ciao.


  • User

    Certo Nhatan! Ovviamente non sono sicura neanche io..ma purtroppo il bottone non va..quindi deve esserci per forza qualcosa che non funziona..Ora però mi è sorto un altro dubbio..perdonami se ti scoccio..:)
    Se risolvo associando al pulsante la funzione per loadare l'swf..comunque c'è il problema che a seconda dello stato in cui si trova il semaforo (verde o rosso) deve caricarsi un swf diverso..quindi sempre un'istruzione if..else devo metterci..no?