2010-07-31 3 views
0

J'ai un champ 3D avec beaucoup de MovieClip s dedans, et il semble que le dernier ajouté est celui qui chevauche les autres et pas celui avec la valeur z la plus élevée.
Y at-il une propriété/fonction qui définit z-index? (Trier les enfants par z valeur semble trop comme un hack).
Un moteur 3D qui peut placer MovieClip s sera utile (mais pas un qui nécessite un dessin personnalisé).
J'utilise Flash CS5 avec ActionScript 3Gestion de la profondeur dans actinscript3

Répondre

1

Vous cherchez parent.setChildIndex. Vous pouvez l'utiliser ou swapChildren pour déplacer l'index z des enfants.

+0

Je ne peux pas mettre 2 enfants indexés à la même valeur que ce qui peut arriver. – Dani

+0

Si vous spécifiez un index qui existe déjà, il suffit d'insérer cet objet et de tout déplacer entre l'ancien emplacement et le nouveau. À partir de la documentation: Lorsque vous utilisez la méthode setChildIndex() et spécifiez une position d'index déjà occupée, les seules positions qui changent sont celles qui se trouvent entre l'ancienne et la nouvelle position de l'objet d'affichage. Dans le cas de swapChildren, il suffit d'échanger les deux et ainsi, rien ne sera déplacé. – umop

0

flash lui-même n'a pas de tri z-index avec l'espace 3D, donc vous devez soit tirer un moteur 3D complètement nouveau ou le trier manuellement chaque image. Quoi qu'il arrive, vous aurez toujours un problème en essayant de chevaucher deux avions sur la même coordonnée en z, même dans les moteurs 3D complets, vous devez décider lequel vous voulez être en face des autres ou vous aurez des scintillements au fur et à mesure que chaque image change de place.

personnellement je travaille avec Away3D comme un moteur, et cela a des possibilités pour 'MovieMaterial' à un avion (ce qui est probablement ce que vous voulez dire) mais il pense que c'est une utilisation assez générale et peut être utilisé dans Papervision etc. . aussi.