Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ae galera,
Bem simples: Eu tenho um jogo com um ranking que é um array que contem os seguintes atributos: gols e tempo. A idéia é que o primeiro critério de ranking é o numero de gols e que o segundo critério é o tempo. O lance é que o número de gols tem que ser decrescente e o tempo crescente (quem marcou mais gols em menos tempo, sendo o menor tempo criterio de desempate).
Algo assim:
array[0] = {gols:15, tempo:15};
array[0] = {gols:15, tempo:20};
array[0] = {gols:12, tempo:30};
array[0] = {gols:10, tempo:5};
Isso é salvo em um XML então a ordem la ta bagunçada e tem que ser ordenada no flash. Eu to usando a função sortOn que funciona parcialmente:
ranking.sortOn(["goals", "time"], Array.NUMERIC | Array.DESCENDING);
Ele funciona pra ordenar pelo número de gols, mas o tempo também é decrescente. Então o cara que fez 15 gols em 20 segundos é melhor rankeado que o que fez 15 gols em 15 segundos, o que tá errado. Então eu preciso de um segundo critério de ordenação pro segundo campo.
Alguma idéia?
Lucas
Fala cara,
Tive que mudar um pouquinho a função, mas tu deu a luz. Valeu. Pra quem precisar aí algo parecido.
function sortGoals(a:Object, b:Object):Number
{
var time1:uint = a.time;
var time2:uint = b.time;
var score1:uint = a.goals;
var score2:uint = b.goals;
if(score1 < score2)
{
return 1;
}
else if(score1 > score2)
{
return -1;
}
else
{
if(time1 < time2)
{
return -1;
}
else if(time1 > time2)
{
return 1;
}
else
{
return 0;
}
}
}
ranking.sort(sortGoals);
Aqui colega:
//Output
/*
Gols: 15, Tempo: 15
Gols: 15, Tempo: 20
Gols: 12, Tempo: 30
Gols: 10, Tempo: 5
*/
Abraços