Get Children from DisplayObject

Hi, need help regarding getting children from MovieClip, first I get movieclip from swf library and then trying to loop through to check children (like AS3)

bg = Assets.getMovieClip ("ItemsLibrary:dynamicClass.TopView");
addChild(bg);
var bgChild:Dynamic;
for (bgChild in bg){
	var nameStr:String = bgChild.name;
	if (nameStr.indexOf('sel_') != -1){
		bgChild.addEventListener(MouseEvent.CLICK, onBuildingClickHandler);
	}
}

I also tried with reflect but no luck

var bgNumChildren:Int = Reflect.field (bg, "numChildren");
		
trace(bgNumChildren+'  from asset leng');
var i:Int = 0;
for (i in 0...bgNumChildren){
	var bgChild:DisplayObject = bg.getChildAt(i);	
	if (Std.is(bgChild, DisplayObject)){
		var name:String = Reflect.field (bgChild, "name");
	    trace(name);
	    if (name.indexOf('sel_') != -1){
	         bgChild.addEventListener(MouseEvent.CLICK, onBuildingClickHandler);
	   }
    }
}

can anyone advice me to right direction, thanks

I have solved myself

Does it work if it’s not cast as Dynamic?

what do you mean cast as Dynamic

simply tried this and it works

bg = Assets.getMovieClip ("ItemsLibrary:dynamicClass.TopView");
addChild(bg);
var bgNumChildren:Int = bg.numChildren;
		
var i:Int = 0;
for (i in 0...bgNumChildren){
	var bgChild:DisplayObject = bg.getChildAt(i);
			
	if (Std.is(bgChild, DisplayObject)){
				
	var name:String = bgChild.name;
    if (name.indexOf('sel_') != -1){
	 bgChild.addEventListener(MouseEvent.CLICK, onBuildingClickHandler);
    }
  }
}

Yeah, I meant something more like that, like:

bg = Assets.getMovieClip ("ItemsLibrary:dynamicClass.TopView");
addChild(bg);
var bgChild:DisplayObject;
for (i in 0...bg.numChildren){
	bgChild = bg.getChildAt(i);
	var nameStr:String = bgChild.name;
	if (nameStr.indexOf('sel_') != -1){
		bgChild.addEventListener(MouseEvent.CLICK, onBuildingClickHandler);
	}
}

Your current code should work, but you don’t need to initialize i outside of the loop, and you don’t need to use Std.is to check if each child is a DisplayObject, since they definitely are :slight_smile:

1 Like

thanks for advice @singmajesty