2012-07-24 43 views
2

我使用一个函数来更新舞台上的我的文本字段:通过根容器搜索没有找到所有文本字段?

private function updateFields(rootContainer:DisplayObjectContainer):void 
{ 
    for(var i=0; i < rootContainer.numChildren; i++) { 
     var item:* = rootContainer.getChildAt(i); 
     try { 
      updateFields(item); 
     } catch (e:Error) { 
      trace(e.toString()); 
     } 
     if (item.toString() == '[object TextField]') { 
      trace(item.name); 
     } 
    } 
} 

它发现放置在舞台上的文本字段的一半。为什么是这样?让我发狂。

回答

1

这适用于我。

private function updateFields(rootContainer:DisplayObjectContainer):void 
{ 
    for (var i:uint = 0, n:uint = rootContainer.numChildren; i < n; ++i) { 
     var item:DisplayObject = rootContainer.getChildAt(i); 
     if (item is DisplayObjectContainer) { 
      updateFields(DisplayObjectContainer(item)); 
     } else if (item is TextField) { 
      trace(item.name); 
     } 
    } 
} 

编辑:固定DisplayObjectContainer铸造

+0

我得到 “1118:静态类型flash.display使用的值隐式强制:的DisplayObject可能无关的类型flash.display一:的DisplayObjectContainer。” 您的底层实施有何不同? – saxly 2012-07-24 16:31:25

+0

修复了'DisplayObjectContainer'转换。 – Florent 2012-07-24 16:34:44

+0

还有一个问题,你到目前为止已经解决了我的生活。项目的引用是静态的,所以在执行操作时我似乎无法更改文本字段的值:item.text =“text”。 我如何找到对象的引用。 – saxly 2012-07-24 16:43:21