- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- muovere singole clip nel tempo attraverso variabili esterne
-
Manca il file.txt
-
Partendo degli script postato da te e Flep prova cosi:
stop(); //myVar = new LoadVars(); //myVar.LoadVars("file.txt"); var traguardo:Number = 500; var variabili_array:Array = new Array(a, b, c, d, e, f); var cavalli_array:Array = new Array(f_blu, f_rosso, f_verde, f_giallo, f_viola, f_arancio); //_root.nextFrame(); 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(3); } }; }
L'as va tutto su un fotogramma e gli cavalli devono essere li pure.
-
Grazie tantissimo!
Ci provo stasera stessa!
Speriamo bene...
-
Buongiorno Onsitus!
Allora...ho fatto come mi hai detto tu ma ancora non va. Forse sbaglio qualcosa nel caricamento delle variabili. Ora i cavalli partono ma non si fermano!Analizzando il dubug variabili del filmato mi sono accorta, infatti, che l'as non riesce a definire le variabili "a,b,c,d,e,f" prima che il ciclo array parta.
Ho dovuto poi aumentare il frame rate perchè l'animazione dei cavalli era troppo lenta.
Ti invio l'ultima prova che ho fatto nella speranza di riuscire a capirci qualcosa.
Ah...un'altra domanda. Flep ha liquidato subito il tentativo di usare le variabili con un setInterval....tu che ne pensi?
Grazie
Pri
-
Prima di continuare deve spiegarmi un cosa che non ho capito.:?
I cavalli partano tutti alle stesso momento e va bene.
Poi:
- devono avere velocita diverse e si fermano tutti allo stesso punto
o - devono avere tutti stessa velocita ma si fermano a punti diversi
:bho:
PS: riguardo consigli di Flep, personalemente mi fido di lui al 100%. E un actionscripter puro (Flash Developper) mentre io (come piu nel tuo caso) sono della parte del design (Flash Designer). Per quello qualunque script/consigli venando da lui non le metto in dubbio.;)
- devono avere velocita diverse e si fermano tutti allo stesso punto
-
Magari avessero velocità diverse! Mi sembra un po' complicatuccio...no?
Cmq sia, a seconda del punteggio (letto nel file.txt) devono fermarsi più avanti o più indietro. Chi ha il punteggio più alto si fermerà dopo.L'ideale sarebbe che il cavallo che avesse il punteggio più alto andasse più veloce e che tutti insieme poi si fermassero nello stesso istante....
utopia?Riguardo ai consigli di Flep anch'io non li metto in dubbio. E' che all'inizio della discussione siamo partiti subito con le variabili che assegnavano il valore alla x di ogni cavallo e non abbiamo più riparlato di muoverli fino alla scandenza di un tempo variabile....
Anch'io sono una web designer e la programmazione per me è arabo!
-
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.
-
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); } }; } } };
-
Grazie tanto ragazzi.
Siete veramente disponibili!
-
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.
Tutto cio mi perplime...
-
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 rigacavalli_array*._x++
diventa
cavalli_array*._x+=variabili_array*;
-
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);??
-
si va bene, poi apri un ciclo e segui lo script
-
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?
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);
}
};
}
}
};
-
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()
-
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!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);
}
};
}
}
};
-
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.
-
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...
-
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);
}
};
}
}
};
-
Mi è venuto un dubbio....
Non è che devo definire pure i limiti dello schermo sul quale muoversi??