2010-11-09 4 views
1

Как я могу надежно перебирать MovieClip для каждого ребенка?Разбор видеоролика для детей?

Я работаю над игрой и отличным способом выложить свои уровни внутри MovieClip, причем каждый кадр является новым уровнем. Проблема в том, что когда я перехожу к кадру 2 или 3 и пытаюсь выполнить итерацию через дочерние ролики MovieClip, я получаю другое число (меньше), чем на самом деле в этом фрейме.

Я думаю, это потому, что экземпляры предыдущего кадра переносятся на новый кадр.

Простым решением является создание нового MovieClip для каждого уровня вместо нового кадра внутри каждого MovieClip, но это не самое масштабируемое решение (скажем, я хочу удалить уровень или добавить уровень между другими уровнями, и т.д).

Любые идеи?

+0

Учитывая любую мысль о применении спрайтов? это не похоже на то, что вы используете временную шкалу клипа, и спрайты существенно меньше накладных расходов. –

+0

Но это не проблема ... Тем не менее - это хорошо. –

+0

@ Aurel300, вот почему его в комментариях, а не ответы. ;) –

ответ

0

Вы можете пропустить все дочерние элементы для текущего кадра, а затем удалить их, а затем перейти к следующему кадру.

1

Пытался дома, работает:

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 является MovieClip в Flash IDE библиотека, содержащая: кадр 1: НИЧЕГО кадр 2: 3 $ TestMovie3 MovieClip кадр 3: 5 $ TestMovie3 MovieClip

0

Почему бы вам не использовать класс Document наряду с определенными классами для вашей игры. Просто используйте fla для ваших графических активов.

Таким образом, вы не будете зависимыми от кадра, и у вас будет полный контроль над экземплярами MovieClips для каждого уровня.

Смежные вопросы