2010-11-09 17 views
1

Comment puis-je parcourir de manière fiable un MovieClip pour chaque enfant?Analyse d'un MovieClip pour les enfants?

Je travaille sur un jeu et une excellente façon de disposer mes niveaux est à l'intérieur d'un MovieClip, chaque image étant un nouveau niveau. Le problème est que lorsque je passe à l'image 2 ou 3 et que j'essaie de parcourir les enfants de MovieClip, j'obtiens un nombre différent (moins) que ce qui est réellement sur cette image.

Je pense que c'est parce que les instances de la trame précédente sont reportées sur la nouvelle trame. Une solution simple est de créer un nouveau MovieClip pour chaque niveau au lieu d'un nouveau cadre dans chaque MovieClip, mais ce n'est pas la solution la plus évolutive (disons que je veux supprimer un niveau ou ajouter un niveau entre d'autres niveaux, etc).

Des idées?

+0

avez-vous pensé à utiliser des sprites? cela ne sonne pas comme si vous utilisiez la chronologie du clip, et sprites sensiblement moins de frais généraux –

+0

Mais ce n'est pas le problème là-bas ... Encore - bonne chose c'est. –

+0

@ Aurel300, c'est pourquoi c'est dans les commentaires, pas les réponses. ;) –

Répondre

0

Vous pouvez faire défiler tous les enfants pour l'image en cours, puis les supprimer, puis passer à l'image suivante.

1

Essayé à la maison, fonctionne:

var mc : $TestMovie2 = new $TestMovie2(); 
addChild(mc); 
mc.addEventListener(Event.ADDED, function(e : Event) : void { 
    trace("add to mc :",e.target,e.target["name"]); 
}); 
mc.addEventListener(Event.REMOVED, function(e : Event) : void { 
    trace("remove from mc :",e.target,e.target["name"]); 
});   
mc.stop(); 
mc.gotoAndStop(2); 
trace("frame 2 numChildren: ",mc.numChildren); 
var i : int = mc.numChildren; 
while (i--) { 
    trace(mc.getChildAt(i).name); 
} 
mc.gotoAndStop(3); 
trace("frame 3 numChildren: ",mc.numChildren); 
i = mc.numChildren; 
while (i--) { 
    trace(mc.getChildAt(i).name); 
} 

// output : 
// add to mc : [object $TestMovie3] $child_1_frame2 
// add to mc : [object $TestMovie3] $child_3_frame2 
// add to mc : [object $TestMovie3] $child_2_frame2 
// frame 2 numChildren: 3 
// $child_2_frame2 
// $child_3_frame2 
// $child_1_frame2 
// remove from mc : [object $TestMovie3] $child_1_frame2 
// remove from mc : [object $TestMovie3] $child_3_frame2 
// remove from mc : [object $TestMovie3] $child_2_frame2 
// add to mc : [object $TestMovie3] $child_1_frame3 
// add to mc : [object $TestMovie3] $child_2_frame3 
// add to mc : [object $TestMovie3] $child_3_frame3 
// add to mc : [object $TestMovie3] $child_4_frame3 
// add to mc : [object $TestMovie3] $child_5_frame3 
// frame 3 numChildren: 5 
// $child_5_frame3 
// $child_4_frame3 
// $child_3_frame3 
// $child_2_frame3 
// $child_1_frame3 

$ TestMovie2 est un MovieClip dans la bibliothèque IDE flash contenant: image 1: RIEN cadre 2: 3 $ TestMovie3 MovieClip cadre 3: 5 $ TestMovie3 MovieClip

0

Pourquoi n'utilisez-vous pas une classe Document, avec des classes spécifiques pour votre jeu? Utilisez simplement le fla pour vos ressources graphiques. De cette façon, vous ne serez pas dépendant de la frame et vous aurez un contrôle total sur vos instances MovieClips pour chaque niveau.