0

フレックス4.6

私は以下のようにaddElementを使用しています。ただし、要素を検査するとき、要素の名前には数字が接尾辞として付いているため、ロードされた要素の名前はにnewModなりますnewMod10(数字は可変です)。私がしたいのなら、removeElement()私は正しいものが何であるかわからないgetChildByName()ので、getChildByName("newMod")失敗します。

だから私のQは

  1. 一意の名前でElement()を追加するにはどうすればよいですか
  2. nameXXで参照できるように、追加した要素の名前を見つけるにはどうすればよいですか。

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

1 に答える 1

0

最善の方法は、名前プロパティをオブジェクトにアタッチして 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 プロパティがあるかどうかは確認しませんでしたが、それでうまくいきます。または、.name == "info1" の代わりに indexOf("info1") >= 0 を使用することを除いて、id タグでまったく同じ方法を使用できます。

于 2012-08-31T05:28:11.043 に答える