• Super User

    Prova così:

    
    stop();
    var id:Number;
    var arrivi_array:Array=new Array();
    var campi_array:Array=new Array(c01,c02,c03);
    loadVariables("file2.txt",this);
    this.onEnterFrame = function() {
        var traguardo:Number = 720;
        var counter:Number = 0;
        var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f, this.g, this.h);
        var cavalli_array:Array = new Array(this.f_blu, this.f_giallo, this.f_viola, this.f_verde, this.f_arancio, this.f_rosso, this.f_azzurro, this.f_rosa);
        for (var i:Number = 0; i<cavalli_array.length; i++) {
            //cavalli_array*._x++;
            cavalli_array*._x = cavalli_array*._x+(variabili_array*/200);
            //trace(cavalli_array*);
            //trace(variabili_array*);
            //trace(counter);
            if (cavalli_array*._x>=variabili_array*) {
                cavalli_array*._x = variabili_array*;
                //cavalli_array*.onEnterFrame = null;
            } else if (cavalli_array*._x>=traguardo) 
      {
       cavalli_array*.posizione=cavalli_array*._x;
       arrivi_array.push(cavalli_array*.posizione);
                counter = counter+1;
                cavalli_array*.onEnterFrame = null;
                if (counter>=3) 
       {
        mostraPosizioni();
                    attesa();
                }
            }
        }
    }
    function mostraPosizioni()
    {
     for(var i:Number=0;i<arrivi_array.length;i++)
     {
      c01*.text=arrivi_array*.toString();
     }
    }
    function attesa()
    {
     id=setInterval(vai,3000);
    }
    function vai()
    {
     clearInterval(id);
     _root.gotoAndStop("qualificati");
     trace('stop')
    }
    
    

    controlla campi_array, ho inserito i campi di testo, controlla se le path sono giuste, se sono sulla root va bene.


  • User

    Macello macellissimo! :arrabbiato:
    I cavalli sono 6 Flep. Non ci sto capendo più niente!
    Potresti dare un'occhiata al mio codice e dirmi dove sbaglio?

    stop();
    var id:Number;
    loadVariables("file.txt",this);
    this.onEnterFrame = function() {
        var traguardo:Number = 755;
        var counter:Number = 0;
        var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
        var cavalli_array:Array = new Array(this.f_blu, this.f_rosso, this.f_verde, this.f_giallo, this.f_viola, this.f_arancio);
        var corsie_array:Array = new Array(this.c01, this.c02, this.c03, this.c04, this.c05, this.c06);
        for (var i:Number = 0; i<cavalli_array.length; i++) {
            //cavalli_array*._x++;
            cavalli_array*._x = cavalli_array*._x+(variabili_array*/200);
            //trace(cavalli_array*);
            //trace(variabili_array*);
            //trace(counter);
            if (cavalli_array*._x>=variabili_array*) {
                cavalli_array*._x = variabili_array*;
                cavalli_array*.onEnterFrame = null;
            } else if (cavalli_array*._x>=traguardo) {
                counter = counter+1;
                cavalli_array*.onEnterFrame = null;
                if (counter==1) {
                    corsie_array*.text = "1°";
                    corsie_array*.onEnterFrame = null;
                }
                if (counter==2) {
                    corsie_array*.text = "2";
                    corsie_array*.onEnterFrame = null;
                }
                if (counter>=3) {
                    corsie_array*.text = "3"
                    corsie_array*.onEnterFrame = null;
                    //_root.gotoAndStop(2);
                    //setInterval(3000);
                    //_root.gotoAndStop("qualificati");
                    attesa();
                }
            }
        }
    }
    function attesa() {
        id = setInterval(vai, 3000);
    }
    function vai() {
        clearInterval(id);
        _root.gotoAndStop("qualificati");
        trace('stop');
    }
    

  • User Attivo

    il mio suggerimento prima leggermente imperfetto..:ciauz:

    stop();
    _target_corrente = this
    loadVariables("file2.txt",this);
    _target_corrente.onEnterFrame = function() {
    var traguardo:Number = 720;
    var counter:Number = 0;
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f, this.g, this.h);
    var cavalli_array:Array = new Array(this.f_blu, this.f_giallo, this.f_viola, this.f_verde, this.f_arancio, this.f_rosso, this.f_azzurro, this.f_rosa);
    for (var i:Number = 0; i<cavalli_array.length; i++) {
    //cavalli_array*._x++;
    cavalli_array*._x = cavalli_array*._x+(variabili_array*/200);
    //trace(cavalli_array*);
    //trace(variabili_array*);
    //trace(counter);
    if (cavalli_array*._x>=variabili_array*) {
    cavalli_array*._x = variabili_array*;
    //cavalli_array*.onEnterFrame = null;
    } else if (cavalli_array*._x>=traguardo) {
    **counter = counter+1;
    **classifica(cavalli_array,counter,cavalli_array.length)
    ***}
    }
    }

    classifica = function(target,counter,num_cavalli) {
    target.createTextField("txt_pos",0,5,5,150,24)
    target.txt_pos.autoSize = true
    target.txt_pos.text = "Pos:"+counter
    if(counter>num_cavalli) {
    **_target_corrente **.onEnterFrame = undefined
    var secondi_left = setInterval(function() {
    clearInterval(secondi_left)
    _root.gotoAndStop("qualificati"); },3000)
    }
    }


  • User

    Grazie Edo, ma che fine hanno fatto i miei campi di testo dinamici (c01, c02, c03, c04, c05, c06)?
    Come ho scritto prima, all'arrivo di ogni cavallo sulla sua corsia dovrebbe apparire il suo posto d'arrivo...


  • User Attivo

    @priscilla73 said:

    Grazie Edo, ma che fine hanno fatto i miei campi di testo dinamici (c01, c02, c03, c04, c05, c06)?
    Come ho scritto prima, all'arrivo di ogni cavallo sulla sua corsia dovrebbe apparire il suo posto d'arrivo...

    se noti nella funzione classifica vado a creare una textField in tutti gli opportuni cavalli al raggiungimento del traguardo di ciascuno.
    associando il contenuto di Pos: 1 etc.... se questo non è il tuo obbiettivo avendo già i campi di testo potresti passare nella funizione classifica una variabile I in modo da popolare in base al suo valure il campo di testo rispettivo..

    es:

    stop();
    _target_corrente = this
    loadVariables("file2.txt",this);
    _target_corrente.onEnterFrame = function() {
    var traguardo:Number = 720;
    var counter:Number = 0;
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f, this.g, this.h);
    var cavalli_array:Array = new Array(this.f_blu, this.f_giallo, this.f_viola, this.f_verde, this.f_arancio, this.f_rosso, this.f_azzurro, this.f_rosa);
    for (var i:Number = 0; i<cavalli_array.length; i++) {
    //cavalli_array*._x++;
    cavalli_array*._x = cavalli_array*._x+(variabili_array*/200);
    //trace(cavalli_array*);
    //trace(variabili_array*);
    //trace(counter);
    if (cavalli_array*._x>=variabili_array*) {
    cavalli_array*._x = variabili_array*;
    //cavalli_array*.onEnterFrame = null;
    } else if (cavalli_array*._x>=traguardo) {
    **counter = counter+1;
    **classifica(cavalli_array,counter,cavalli_array.length,i)
    ***}
    }
    }

    classifica = function(target,counter,num_cavalli,i) {
    _target_corrente["c0"+(i+1)].text = "Poszione:"+counter
    if(counter>num_cavalli) {
    **_target_corrente **.onEnterFrame = undefined
    var secondi_left = setInterval(function() {
    clearInterval(secondi_left)
    _root.gotoAndStop("qualificati"); },3000)
    }
    }


  • Super User

    Priscilla, ho guardato il tuo codice ma non stai utilizzando gli arrays che ti ho inserito... ti complichi troppo la vita come fai tu...


  • User

    Si! così ottengo più o meno lo stesso risultato che ho ottenuto io col mio script. Il problema penso sia proprio nel counter.
    Praticamente quando un cavallo arriva a destinazione si ferma e il counter non lo calcola piu'. In questo modo pure la posizione verrà sbagliata.
    Succede, infatti, che il primo arriva e' si piglia il numero 1 poi arriva il secondo e se lo piglia lui e cede al primo cavallo l'1! Il terzo cavallo, poi, ancora peggio, si piglia l'1 pure lui!


  • User

    Ragazzi forse se date un'occhiata all'animazione è meglio.
    Magari non riesco a spiegarmi bene :bho:
    Abbiate pietà...

    Grazie
    Pri


  • User Attivo

    @priscilla73 said:

    Ragazzi forse se date un'occhiata all'animazione è meglio.
    Magari non riesco a spiegarmi bene :bho:
    Abbiate pietà...

    Grazie
    Pri

    se i cavalli sn disposti non secondo l'ordine dell'array.. i campi di testo ti conviene numerarli cosi come hai fatto ma disporli nello stesso ordine con cui hai disposto i cavalli. altri ti sarà impossibile lavorare ocn la var i ..


  • User

    Certo che sono disposti secondo l'ordine dell'array.
    Hai dato un'occhiata al mio allegato?
    E cmq mi è venuta un'idea in mente....E se al posto del testo dinamico facessi caricare come filmato esterno i numeri d'arrivo 1° 2° e 3°?


  • Super User

    Senti Priscilla, ma se uso un file XML va bene lo stesso per te ?


  • User

    Si si. va bene lo stesso!


  • User Attivo

    faccio guadagnare un po di tempo a flepp... mi so dilettato io a farne qualche prova..

    http://img530.imageshack.us/my.php?image=garaue9.swf&width=800

    :yuppi:


  • User

    Grande Edo!
    Come ci sei riuscito?


  • User Attivo

    combinando un po il codice cercando di ottimizzare l' esigenza. certo, una tiratina d'orecchie dal buon coder flepperrr... non me la risparmio st'avolta.

    🙂

    to'..

    a = 250;
    b = 200;
    c = 120;
    d = 130;
    e = 190;
    f = 160;
    //loadVariables("file2.txt", this);
    **var traguardo:Number = (882);
    var arrivo:Number = traguardo+150
    var counter:Number = 0;**
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
    var cavalli_array:Array = new Array(this.f_blu, this.f_rosso, this.f_verde, this.f_giallo, this.f_viola, this.f_arancio);
    for (var i:Number = -1; i<cavalli_array.length; i++) {
    **    cavalli_array*._x = -250;**
       ** cavalli_array*.onEnterFrame = muovi;**
    *    cavalli_array*.i = i;*
        muovi = function () {
            with (this) {
              **  _x = _x+(Math.min(arrivo, _x+(variabili_array*))-_x)/12;**
                if (Math.ceil(_x)>=traguardo && this.arrivo_ok == undefined) {
    **                this.arrivo_ok = true;
                    _root.attachMovie("posizione", "c0"+(i+1), i, {_x:traguardo, _y:_y});
                    classifica(i);**
                }
                if (Math.ceil(_x)>=arrivo) {
                    gotoAndStop(1);
    **                delete onEnterFrame;**
                    if (_root.counter>=num_cavalli) {
                     **   frame2();**
                    }
                }
            }
        };
    }
    classifica = function (i) {
    **    _root.counter++;
        _root["c0"+(i+1)].txt.text = ".0"+counter;**
    };
    frame2 = function () {
        var secondi_left = setInterval(function () {
    **        clearInterval(secondi_left);**
            _root.gotoAndStop("qualificati");
        }, 3000);
    };
    
    

  • User

    Accidenti! Si stravolge tutto quello che avevo fatto prima.
    Ora ci provo.
    Grazie


  • User

    Lo applico al mio filmato ma i cavalli non si muovo proprio! 😞


  • User Attivo

    ciao priscilla.. molto probabilmente loadvariables crea qualche conflitto, è poco affidabile in flash8. ecco xchè flep ti proponeva l'integrazione xml.

    In alternativa potresti sempre integrare la classe loadVars e ottimizzare ancor + il codice.

    se noti io x ovviare al problema e cmq proporti l'animazione e verifica della posizione, ho associato delle variabili interne a,b,c per definire gli spostamenti.

    Puoi trovare l'esempio qui
    http://img159.imageshack.us/my.php?image=corsaprova02mq2.swf

    X realizzare cosi la simulazione sulla tua base.
    rimpiazza l'istruzione del fotogramma con questa

    stop();
    a = 250;
    b = 200;
    c = 1200;
    d = 130;
    e = 190;
    f = 160;
    loadVariables("file.txt", this);
    var traguardo:Number = (700);
    var arrivo:Number = traguardo+150
    var counter:Number = 0;
    var variabili_array:Array = new Array(a, this.b, this.c, this.d, this.e, this.f);
    var cavalli_array:Array = new Array(this.f_blu, this.f_rosso, this.f_verde, this.f_giallo, this.f_viola, this.f_arancio);
    for (var i:Number = -1; i<cavalli_array.length; i++) {
        cavalli_array*._x = -25
        cavalli_array*.onEnterFrame = muovi;
        cavalli_array*.i = i;
        muovi = function () {
            with (this) {
                _x = _x+(Math.min(arrivo, _x+(variabili_array*))-_x)/12;
                if (Math.ceil(_x)>=traguardo && this.arrivo_ok == undefined) {
                    this.arrivo_ok = true;
                    _root.attachMovie("posizione", "c0"+(i+1), i, {_x:traguardo, _y:_y});
                    classifica(i);
                }
                if (Math.ceil(_x)>=arrivo) {
                    delete onEnterFrame;
                    if (_root.counter>=num_cavalli) {
                        frame2();
                    }
                }
            }
        };
    }
    classifica = function (i) {
        _root.counter++;
        trace(i+":"+counter)
        _root["c0"+(i+1)].text = ".0"+counter;
    };
    frame2 = function () {
        var secondi_left = setInterval(function () {
            clearInterval(secondi_left);
            _root.gotoAndStop("qualificati");
        }, 3000);
    };
    
    

    un saluto

    :ciauz:


  • User

    Innanzi tutto, grazie moltissime Edo. Ho applicato il tuo script. I cavalli arrivano e lasciano la loro posizione nei punti desiderati ma...
    I cavalli nel precedente script (quello di Flep) partivano, correvano piu' veloci o piu' lenti in base al loro punteggio e, se il loro punteggio non superva il valore del traguardo, si fermavano.
    Inoltre nel tuo filmato i cavalli partono veloci a man mano che arrivano al traguardo, rallentano...si puo' evitare?

    Scusami
    Grazie per la pazienza

    Pri


  • Super User

    Sto facendo con XML 🙂