0

弹性 4.6

我正在使用 addElement 如下。但是我注意到,在检查元素时,元素的名称以数字为后缀,因此加载的元素名称newMod变为newMod10(数字是可变的)。如果我想,那么removeElement()我不知道正确的是什么getChildByName(),所以getChildByName("newMod")失败了。

所以我的Q是

  1. 如何使用唯一名称 addElement()
  2. 如何找到我刚刚添加的元素的名称,以便我可以通过 nameXX 引用

谢谢艺术

/*  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);
   }
4

1 回答 1

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;
     }
}

我没有检查 info 是否具有 name 属性,但这可以解决问题。或者,您可以对 id 标签使用完全相同的方法,除了使用 indexOf("info1") >= 0,而不是 .name == "info1"

于 2012-08-31T05:28:11.043 回答