flex 4.6
我正在使用addElement,如下所示。但是我注意到,在检查元素时,元素的名称后缀为数字,因此加载的元素名称newMod
变为newMod10
(数字是可变的)。如果我想removeElement()
,我不知道正确的getChildByName()
会是什么,所以getChildByName("newMod")
会失败。
所以我的Q是
THX 领域
/* load module */
/* creationComplete="loadNewMod('modToLoad','A' )
public function loadNewMod(modName,evtTyp):void {
info = ModuleManager.getModule(modName);
var self:Object = this;
var meh = "modEventHandler"+(evtTyp);
info.addEventListener(ModuleEvent.READY, function(e:ModuleEvent){
self[meh](e)
});
info.load(null, null, null, moduleFactory);
}
private function modEventHandlerA(e:ModuleEvent):void {
vg1.addElement(info.factory.create() as IVisualElement);
}
<s:Group id="vg1" horizontalCenter="0" verticalCenter="0">
<s:Label id="newLabel" />
</s:Group>
[编辑] 通过打破我添加了一个似乎有用的ID的功能
private function modEventHandlerA(e:ModuleEvent,fcall):void {
var newID = info.factory.create();
newID.name = "myElem";
vg1.addElement(hh as IVisualElement);
}
答案 0 :(得分:0)
最好的方法是将name属性附加到对象并执行for循环。它效率低下,但在AS3中设置ID标签似乎无法正常工作。
info.name = "info1";
for ( var i:Number = 0; i < vg1.numElements; i++ ) {
if ( ( vg1.getElementAt(i) as UIComponent).name == "info1" ) {
vg1.removeElementAt(i);
break;
}
}
我没有检查信息是否具有name属性,但这样就可以了。或者,你可以使用与id标签完全相同的方法,除了使用indexOf(“info1”)&gt; = 0,而不是.name ==“info1”