2010-11-09 74 views
1

如何可靠地迭代每个孩子的MovieClip?解析儿童的影片剪辑?

我正在制作一款游戏和一个很好的布局方式,我的关卡位于一个MovieClip内,每个帧都是一个新的关卡。问题是,当我移动到第2帧或第3帧并尝试迭代MovieClip的子项时,我得到的数字与实际在该帧中的数量(少)不同。

我认为这是因为来自前一帧的实例正在被转移到新的帧。

一个简单的解决方案是为每个级别创建一个新的MovieClip,而不是每个MovieClip中的新帧,但这不是最具可扩展性的解决方案(例如,我想要删除级别或在其他级别之间添加级别,等等)。

任何想法?

+0

给出了使用精灵的任何想法?它听起来不像是在使用影片剪辑的时间轴,而且精灵的开销大大减少 – 2010-11-09 18:50:59

+0

但那不是那里的问题......仍然 - 好东西就是这样。 – 2010-11-09 18:55:49

+0

@ Aurel300,这就是为什么它在评论中,而不是答案。 ;) – 2010-11-09 20:26:27

回答

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在包含闪光IDE库: 帧1:NOTHING 框架2:3 $ TestMovie3的MovieClip 框架3: 5 $ TestMovie3 MovieClip

0

为什么不使用Document类以及游戏的特定类?只需使用fla为您的图形资产。

这样,您将不会依赖帧,并且您可以完全控制每个级别的MovieClips实例。