|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
LeeFX
principiante

Registrato: 18/10/09 08:32
Messaggi: 35
|
Oggetto: Ordinare un array di MovieClip, usando sortOn() - (CS4, AS2)
Inviato: 11.02.10 | 19:39 |
|
|
Molto semplicemente ho un array di MovieClip, così dichiarato:
| Codice: | MovieClipArray = new Array(); |
Poi così popolato:
| Codice: | MovieClipArray.push(MovieClipA);
MovieClipArray.push(MovieClipB);
MovieClipArray.push(MovieClipC); |
Ora ogni MovieClip contiene una variabile numerica "age", accessibile normalmente:
Perchè quando uso
| Codice: | MovieClipArray.sortOn("age", Array.NUMERIC); |
...non mi ordina nulla?
Ho letto che sortOn() non funziona con gli "array associativi", ma non ho ben capito la differenza tra "array associativi" e "indexed array".
Non me li ordina per questo motivo?
Se sì,
c'è un altro modo "comodo" per ordinarli? |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 11.02.10 | 20:20 |
|
|
Ciao LeeFX,
hai provato ad usare un array di oggetti?
Esempio:
| Codice: | // creo i MovieClips
var pippo:MovieClip = this.createEmptyMovieClip("pippo", 1);
var pluto:MovieClip = this.createEmptyMovieClip("pluto", 2);
var paperino:MovieClip = this.createEmptyMovieClip("paperino", 3);
var qui:MovieClip = this.createEmptyMovieClip("qui", 4);
var quo:MovieClip = this.createEmptyMovieClip("quo", 5);
var qua:MovieClip = this.createEmptyMovieClip("qua", 6);
var topolino:MovieClip = this.createEmptyMovieClip("topolino", 7);
// associo un' age ad ogni MovieClip
pippo.age = 21;
pluto.age = 18;
paperino.age = 27;
qui.age = 35;
quo.age = 29;
qua.age = 44;
topolino.age = 37;
// push i dati in un array associativo
var arr_ass:Array = new Array();
arr_ass.push({mc:pippo, age:pippo.age});
arr_ass.push({mc:pluto, age:pluto.age});
arr_ass.push({mc:paperino, age:paperino.age});
arr_ass.push({mc:qui, age:qui.age});
arr_ass.push({mc:quo, age:quo.age});
arr_ass.push({mc:qua, age:qua.age});
arr_ass.push({mc:topilino, age:topolino.age});
// ordinazione numerica di "age"
arr_ass.sortOn("age", Array.NUMERIC);
// trace
var len:Number = arr_ass.length;
for (var i:Number=0; i<len; i++) {
trace("mc: " + arr_ass[i].mc);
trace(" - age: " + arr_ass[i].age);
} |
Può andare bene? ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
LeeFX
principiante

Registrato: 18/10/09 08:32
Messaggi: 35
|
Oggetto:
Inviato: 02.03.10 | 19:08 |
|
|
Sì, ho risolto in modo simile, ordinando un array di oggetti, ognuno referenziante un movieclip.
L'oggetto funziona praticamente come un puntatore
In modo che:
| Codice: | obj1.pointer = mc1;
obj2.pointer = mc2; |
etc..
ma usando un ciclo for per lo scopo, e li ho messi in un array di oggetti "arr_obj", e poi li ho ordinati senza problemi.
Stranamente sortOn() non funziona direttamente con gli array di movieclip, che immaginavo funzionasse comunque come un array di puntatori, ma bisogna usare questo "trucco"... che immagino faccia più o meno lo stesso (aggiungendo un passaggio però).
P.S.: Scusa se rispondo dopo quasi un mese, non mi sono arrivate le notifiche di risposta. |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 02.03.10 | 19:10 |
|
|
no problem  ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
|
|
Non puoi inserire nuovi Topic in questo forum Non puoi rispondere ai Topic in questo forum Non puoi modificare i tuoi messaggi in questo forum Non puoi cancellare i tuoi messaggi in questo forum Non puoi votare nei sondaggi in questo forum Non puoi allegare files in questo forum Puoi downloadare gli allegati in questo forum
|
|