2012-04-05 3 views
0

Mon problème est que j'ai une grille isométrique, juste sur la base des valeurs X, Y: Chaque fois que vous cliquez sur un bouton pour la route de l'instance que cet élément est poussé à un tableau()flash AS3 Matrice et tri

// 
addChild(roadTiles); 
gameAssets.push(roadTiles); 
arrangeAssets(); 
// 

ma méthode arrangeAssets vérifie simplement le tableau "aucun point de publication car il échoue la plupart du temps.parfois, certains éléments sont mis à jour mais pas tous Donc, j'espère que quelqu'un a une solution pour vérifier X, Y value, puis setChildIndex of Array. J'ai regardé, continue à être renvoyé à des moteurs as3 de tiers qui ne m'intéressent pas comme je veux faire le mien et avoir une meilleure compréhension

enter image description here

ou est-ce pas possible im utilisant uniquement un X, Y grille

arrangeAssets();{ 
var i:int = gameAssets.length; 
while(i--){ 
    if (getChildIndex(sortedItems[i]) != i) { 
     gameAssets.sortOn("y", Array.NUMERIC); 
     setChildIndex(gameAssets[i], i); 
    } 
    } 

ajouter que les éléments au-dessus de la grille d'herbe dans le tableau.

+1

Je pense que vous allez avoir besoin de prendre un autre coup de couteau à expliquer ce que vous cherchez à faire. Commencez par poster votre code 'arrangeAssets' actuel, et donnez un exemple d'une nouvelle instance de roatTiles que vous voulez insérer dans gameAssets et comment elle devrait être gérée. – sberry

+0

juste des informations mises à jour. – joshua

+0

J'ai toujours du mal à comprendre, pouvez-vous préciser ce que vous voulez que le tri fasse par rapport à ce qu'il fait? ou n'est-ce pas une question liée au tri? – Daniel

Répondre

1

en supposant que le point le plus à gauche est x: 0, y:0 les tuiles couvrent l'autre allant d'un x haut et bas y à un faible x et haute y valeurs.

J'ajouterais une variable weight (appelez cela comme vous voudrez) et calculer à partir (totalx - x) * y

cela aurait le plus en haut coin ont une valeur de 0, et le fond la plupart ont la plus haute valeur. chaque rangée (diagonale vraiment) serait la même chose.

Ensuite, trier sur le weight et vous avez une liste d'éléments dans la pile z relative.

Cela ne concerne pas vraiment le setchildIndex, car vous ne pouvez pas avoir deux éléments là-bas. un hack serait de tout enlever et de les rajouter dans l'ordre. (Vous pourriez avoir un enfant temporaire, que vous ajoutez les enfants à, de cette façon vous ne devez pas enlever les enfants comme cela se fait automatiquement)

J'ai trouvé cette image qui montre la weight comme _y de http://www.kirupa.com/developer/isometric/depth_sorting.htm

enter image description hereenter image description here

le _y est le même parce que (totalx - x) * y valeurs sont les mêmes horizontalement

+0

semble intéressant, mais c'est sur ma tête, lol je vais réfléchir avec cette pensée pour l'instant merci je ne peux pas obtenir ma tête autour de la valeur de poids? D'où vient-il – joshua

+0

il est calculé, imaginez la grille comme un diamant, le haut est à l'arrière avec le plus petit nombre de poids, et le bas est le front avec le plus élevé. – Daniel

+0

neally l'obtenir, désolé l'homme je ne suis pas un programmeur – joshua