• Super User

    Se vuoi le velocità in base al valore della variabile:
    cavallo.x+=valore_variabile;

    Un consiglio:
    usa un file XML e non un file di testo.


  • Super User

    Per caricare il txt invece:

    
    stop();
    myVar = new LoadVars();
    myVar.load("file.txt");
    myVar.onLoad = function(success) {
     if (success) {
      var traguardo:Number = 50;
      var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
      var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio);
      for (var i:Number = 0; i<cavalli_array.length; i++) {
       cavalli_array*.onEnterFrame = function() {
        this._x++;
        if (cavalli_array*._x>=variabili_array*) {
         cavalli_array*._x = variabili_array*;
         cavalli_array*.onEnterFrame = null;
        } else if (cavalli_array*._x>=traguardo) {
         cavalli_array*.onEnterFrame = null;
         _root.gotoAndStop(2);
        }
       };
      }
     }
    };
    
    

  • User

    Grazie tanto ragazzi.
    Siete veramente disponibili!
    🙂


  • User

    Niente da fare...
    Qualcosa non funziona.....
    I cavalli partono ma non si fermano mai!
    Ci dev'essere qualche errore nel ciclo.

    Ho notato che Flep all'inizio inseriva, per far avenzare i cavalli sull'asse delle x, cavalli_array._x++. Ma i cavalli non si muovevano.

    Mentre con Onsitus l'abbiamo sostituito con this._x++ e i cavalli cosi' si muovono ma è come se non recepissero le variabili dal file.txt. :arrabbiato:

    Tutto cio mi perplime...😢


  • Super User

    Hai inserito i cavalli in un Array ?
    Hai inserito le variabili in un Array ?
    Se si,
    lo script che ho dato all'inizio funziona.
    Poi, se invece di farli avanzare tutti alla stessa velocità, vuoi che avanzino ad una velocità pari alla variabile che carichi per ognuno di loro....allora la riga

    cavalli_array*._x++

    diventa

    cavalli_array*._x+=variabili_array*;


  • User

    Scusa Flep, ho inserito sul primo frame il codice di Onsitus. Non è abbastanza?
    C'è qualche altra operazione che dovrei fare?

    I cavalli che si devono muovere sono le movieclip: f_blu, f_rosso, ecc...
    Non basta la riga:
    var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio);

    ??
    :mmm:


  • Super User

    si va bene, poi apri un ciclo e segui lo script 🙂


  • User

    Ho seguito pari pari lo script di Onsitus ma niente! I cavalli si muovono tutti allo stesso tempo senza fermarsi... Non caricano le variabili? Oppure le variabili non vengono assegnate alle singole clip dei cavalli? :arrabbiato:
    Voglio morì

    stop();
    myVar = new LoadVars();
    myVar.load("file.txt");
    myVar.onLoad = function(success) {
    if (success) {
    var traguardo:Number = 50;
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
    var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio);
    for (var i:Number = 0; i<cavalli_array.length; i++) {
    cavalli_array*.onEnterFrame = function() {
    this._x++;
    if (cavalli_array*._x>=variabili_array*) {
    cavalli_array*._x = variabili_array*;
    cavalli_array*.onEnterFrame = null;
    } else if (cavalli_array*._x>=traguardo) {
    cavalli_array*.onEnterFrame = null;
    _root.gotoAndStop(2);
    }
    };
    }
    }
    };


  • Super User

    Non si fermano perchè la variabile traguardo la dichiari all' interno della funzione onLoad e quindi diventa una variabile locale, cioè finito onLoad lei sparisce, Flash ne cancella memoria.

    Per cui, dichiara quella variabile all' inizio dello script. subito dopo il comando stop()


  • User

    Niente da fare.... Neanche così i cavalli si fermano....
    Forse è il comando "this._x++;" ad essere sbagliato?
    Ma se inserisco " cavalli_array*._x++" non si muovono neanche a pagarli! :quote:

    stop();
    var traguardo:Number = 50;
    myVar = new LoadVars();
    myVar.load("file.txt");
    myVar.onLoad = function(success) {
    if (success) {
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
    var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio);
    for (var i:Number = 0; i<cavalli_array.length; i++) {
    cavalli_array*.onEnterFrame = function() {
    this._x++;
    if (cavalli_array*._x>=variabili_array*) {
    cavalli_array*._x = variabili_array*;
    cavalli_array*.onEnterFrame = null;
    } else if (cavalli_array*._x>=traguardo) {
    cavalli_array*.onEnterFrame = null;
    _root.gotoAndStop(2);
    }
    };
    }
    }
    };


  • Super User

    Quello script è diventato un macello...

    Devi fare dei trace() , fai delle prove con i trace() e guarda se ci sono dei valori che risultano undefined.


  • User

    😄 Un macello si! E' la stessa cosa che dico ogni volta che apro i cassetti in camera mia....ma almeno lì so come fare per rimettere in ordine....

    Grazie Flep...😢


  • User

    ok. Ho inserito un:
    trace(variabili_array*);
    e un:
    trace(cavalli_array*);

    Il debug mi restituisce sempre undefined.....
    stop();
    myVar = new LoadVars();
    myVar.load("file.txt");
    myVar.onLoad = function(success) {
    if (success) {
    var traguardo:Number = 50;
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
    var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio);
    for (var i:Number = 0; i<cavalli_array.length; i++) {
    cavalli_array*.onEnterFrame = function() {
    trace(variabili_array);
    trace(cavalli_array
    );**
    this._x++;
    if (cavalli_array*._x>=variabili_array*) {
    cavalli_array*._x = variabili_array*;
    cavalli_array*.onEnterFrame = null;
    } else if (cavalli_array*._x>=traguardo) {
    cavalli_array*.onEnterFrame = null;
    _root.gotoAndStop(2);
    }
    };
    }
    }
    };


  • User

    Mi è venuto un dubbio....
    Non è che devo definire pure i limiti dello schermo sul quale muoversi?? :mmm:


  • User

    Ecco! inserendo un trace alle due variabili (cavalli_array e variabili_array) prima del cavalli_array*.onEnterFrame = function()
    mi sono accorta che mi restituisce i giusti valori; i nomi dei cavalli e le variabili caricate. Quindi c'e' qualcosa che non va nella funzione....

    Ma cosaaaaaaaaa? :arrabbiato:


  • Super User

    senza if e esle if i cavalli si muovono ?


  • User

    si muovono grazie al comando this._x++;


  • Super User

    Allora,
    all'inizio del ciclo, scrivi cavalli_array*.id=i;

    Poi if e else if diventano così:
    if (this._x>=variabili_array[this.id]) {
    this._x = variabili_array[this.id];
    this.onEnterFrame = null;
    } else if (this._x>=traguardo) {
    this.onEnterFrame = null;
    _root.gotoAndStop(2);


  • User

    Ci sono!!!! :vai:
    **
    l'istruzione:**
    cavalli_array*.onEnterFrame = function() {

    va cambiata in this.onEnterFrame = function() e posizionata prima delle:
    var variabili_array:Array = new Array(this.a, this.b, this.c, this.d, this.e, this.f);
    var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio);

    Yessssssss :fumato:

    Ora l'unico problema rimane che il filmato deve passare al secondo frame solo dopo che i primi passano il traguardo e non solo il primo. :mmm:

    Cmq, grazie Flep! grazie Onsitus
    E scusate per la rottura di scatole! :ciauz:

    Pri


  • User

    Col metodo LoadVars non riuscivo a caricare le variabili della posizione dei cavalli.
    Alla fine il buon vecchio loadVariables mi ha salvato la vita!! :yuppi:

    Un'altra cosa Flep. Mi dicevi che per far aumentare la velocità al cavallo con il punteggio più alto sarebbe bastato inserire al posto di:

    cavalli_array*._x++

    questo codice:
    cavalli_array*._x+=variabili_array*; :arrabbiato:

    Ma non va bene così. La variabile della posizione, infatti, rappresenta solo il numero sul quale si dovrà fermare il cavallo una volta arrivato.
    Forse però se facessi una proporzione tra il punteggio massimo e il numero dei cavalli.....
    :mmm: