• 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 🙂


  • User Attivo

    ci sono delle variabili x controllare la velocità e la lunghezza dello spostamento. a. b c.... che ora ho definito sul fotogramma.

    se vuoi impostare come era prima... bisogna ripristinare in parte lo script che simula il movimento..

    provo a ripristinarlo..

    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(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 = -25
    cavalli_array*.onEnterFrame = muovi;
    cavalli_array*.i = i;
    muovi = function () {
    with (this) {
    ** _x = _x+(variabili_array*/200);**
    // _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);
    };


  • User

    Ora l'andamento dei cavalli e' ok ma arriva il primo, si ferma, gli altri no e dopo 3 secondi si va al secondo frame....


  • User Attivo

    try now. Vedi parti in grassetto.

    stop();
    a = 250;
    b = 200;
    c = 120;
    d = 130;
    e = 190;
    f = 160;
    //loadVariables("file2.txt", this);
    var traguardo:Number = (700);
    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 = Math.min(arrivo, _x+(variabili_array*/20));
    //_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>=cavalli_array.length-1) {
    frame2();
    }
    }
    }
    };
    }
    classifica = function (i) {
    _root.counter++;
    _root["c0"+(i+1)].text = ".0"+counter;
    };
    frame2 = function () {
    var secondi_left = setInterval(function () {
    clearInterval(secondi_left);
    _root.gotoAndStop("qualificati");
    }, 3000);
    };


  • User

    Mi spiego meglio. Se il traguardo e' a 750 (dove finisce lo schermo) e un cavallo ha 200 di punteggio, ad un certo punto (diciamo a un po' meno della meta' dello stage) si dovrebbe fermare.


  • User Attivo

    scusami non credevo fosse questo l'obiettivo anche xxchè non avevo seguito il tuo primo post di riferimento

    prova cosi allora

    stop();
    a = 250;
    b = 200;
    c = 120;
    d = 130;
    e = 190;
    f = 160;
    //loadVariables("file2.txt", this);
    var traguardo:Number = (750);
    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 = Math.min(variabili_array*, _x+(variabili_array*/20));
    //_x = _x+(Math.min(arrivo, _x+(variabili_array*))-_x)/12;
    if (Math.ceil(_x)>=variabili_array* && 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)>=variabili_array*) {
    delete onEnterFrame;
    if (_root.counter>=cavalli_array.length-1) {
    frame2();
    }
    }
    }
    };
    }
    classifica = function (i) {
    _root.counter++;
    _root["c0"+(i+1)].text = ".0"+counter;
    };
    frame2 = function () {
    var secondi_left = setInterval(function () {
    clearInterval(secondi_left);
    _root.gotoAndStop("qualificati");
    }, 3000);
    };


  • Super User

    Eccolo: