2011-08-04 51 views
1

如何检索舞台中的所有MC?如何在AS3中检索舞台中的所有MC?

我想调用addEventListener所有影片剪辑出现在我的舞台,如果它在我的情况的选择的帧数可能 类似的东西伪代码

for(i=0; nbOfChild ; i++) 
    if(stage.childAt(i) is MC and isInTheFrameWithLabel('foo')) 
    stage.childAt(i).addEventListerner(MyStuff) 

回答

9

差不多,你有什么。 。

for(var i:int = 0; i<numChildren; i++) 
{ 
    var e:DisplayObject = getChildAt(i); 
    if(e is MovieClip) 
    { 
     // do stuff with e 
     trace(e); 
    } 
} 

你也可以是一个棘手的招摇撞骗,做这样的事情:

/** 
* Iterate through MovieClips within a container and parse them through handler 
* @param container The container to iterate through and find MovieClips in 
* @param handler A function that accepts MovieClip as its only parameter 
*/ 
function each(container:DisplayObjectContainer, handler:Function):void 
{ 
    for(var i:int = 0; i<container.numChildren; i++) 
    { 
     var e:DisplayObject = container.getChildAt(i); 
     if(e is MovieClip) handler(e); 
    } 
} 

// Example 
each(this, function(mc:MovieClip):void 
{ 
    trace(mc); 
    mc.x += 10; 
}); 
+0

谢谢你,我只是找到了解决办法(下同) –

+0

2011-08-04 09:13:50

+0

@Ascension Systems什么?如果你的意思是我应该这样做,你最终只会有一个孩子:[对象MainTimeline] – Marty

0

你也应该推动这些影片剪辑到一个数组,才能知道谁拥有触发事件的影片剪辑,所以你会喜欢:

var holdObjects:Array = new Array(); 
for(var i:int = 0; i<numChildren; i++) 
{ 
    var e:DisplayObject = getChildAt(i); 
    if(e is MovieClip) 
    { 
     // do stuff with e 
     trace(e); 
     e.addEventlistene(...); 
     holdObjects.push(e); 
    } 
} 
+2

你能详细说明你在做什么吗?好奇。我的意思是,如果您想知道触发事件的MovieClip,则可以在解析到侦听器功能的事件中使用** target **属性。 – Marty

+0

我不明白你为什么使用数组? –