2017-05-25 6 views
2

J'ai des cartes dans le tableau et j'ai le bouton de sorte mais je ne sais pas comment faire ce genre comme le diamant, club, bêche, cartes de coeur veulent séparer à partir de ces cartes ..comment trier des cartes comme le diamant, le club, la bêche, le coeur dans actionscript 3.0

var aList:Array = 
      [ 
       {card:Globe.self.realstage.joker_mc, x:605.55, y:195.45}, 
       {card:Globe.self.realstage.king_mc, x:323.80, y:298.45}, 
       {card:Globe.self.realstage.queen_mc, x:45.85, y:213.95}, 
       {card:Globe.self.realstage.a_mc,  x:605.55, y:195.45}, 
       {card:Globe.self.realstage.ten_mc, x:323.80, y:298.45}, 
       {card:Globe.self.realstage.five_mc, x:45.85, y:213.95}, 
       {card:Globe.self.realstage.two_mc, x:605.55, y:195.45}, 
       {card:Globe.self.realstage.nine_mc, x:323.80, y:298.45}, 
       {card:Globe.self.realstage.four_mc, x:45.85, y:213.95}, 
      ]; 

Tout le monde sait que vous pourriez s'il vous plaît élaborer ce one.Thank vous

Répondre

3

Je suggère d'ajouter un paramètre supplémentaire, dire « poids »:

var aList:Array = 
     [ 
      {card:Globe.self.realstage.joker_mc, x:605.55, y:195.45, weight: 11}, 
      {card:Globe.self.realstage.king_mc, x:323.80, y:298.45, weight: 13}, 
      {card:Globe.self.realstage.queen_mc, x:45.85, y:213.95, weight: 12}, 
      {card:Globe.self.realstage.a_mc,  x:605.55, y:195.45, weight: 14}, 
      {card:Globe.self.realstage.ten_mc, x:323.80, y:298.45, weight: 10}, 
      {card:Globe.self.realstage.five_mc, x:45.85, y:213.95, weight: 5}, 
      {card:Globe.self.realstage.two_mc, x:605.55, y:195.45, weight: 2}, 
      {card:Globe.self.realstage.nine_mc, x:323.80, y:298.45, weight: 9}, 
      {card:Globe.self.realstage.four_mc, x:45.85, y:213.95, weight: 4}, 
     ]; 

puis trier la tableau de base de ce poids:

// in descending order 
aList.sort(function (c1:Object, c2:Object):int 
     { 
      if (c1.weight > c2.weight) return -1; 
      if (c1.weight < c2.weight) return 1; 
      return 0; 
     }); 

// in ascending order: 
aList.sort(function (c1:Object, c2:Object):int 
     { 
      if (c1.weight > c2.weight) return 1; 
      if (c1.weight < c2.weight) return -1; 
      return 0; 
     }); 

Si vous ne pouvez pas changer l'objet (ou pour une raison quelconque vous ne voulez pas y ajouter du poids), vous pouvez créer une fonction d'aide externe:

// somewhere 
function getWeight(data: Object):int { 
    switch(data.card) { 
     case Globe.self.realstage.two_mc: 
      return 2; 
     case Globe.self.realstage.four_mc: 
      return 4; 

     ... 

     default: return 0; 
    } 
} 

aList.sort(function (c1:Object, c2:Object):int 
    { 
     if (getWeight(c1) > getWeight(c2)) return 1; 
     if (getWeight(c1) < getWeight(c2)) return -1; 
     return 0; 
    });