addChild如何选择错误的插入索引?

时间:2008-09-29 09:41:15

标签: flex actionscript-3 debugging

因此,在Flex应用程序中,我通过创建并调用parent.addChild()来添加新的GUI组件。但是在某些情况下,这会导致Flex的肠道出错。事实证明,addChild确实做到了:

return addChildAt(child, numChildren);

在它破裂的情况下,不知何故,numChildren被一个人关闭。导致此错误:

  

RangeError:错误#2006:提供的   索引超出范围。在   flash.display使用::的DisplayObjectContainer / addChildAt()     在   mx.core ::集装箱/ addChildAt()     在   mx.core ::集装箱/的addChild()     。 。在   flash.events::EventDispatcher/dispatchEventFunction()     在   flash.events::EventDispatcher/dispatchEvent()     在   mx.core :: UIComponent / dispatchEvent()     在   为mx.controls ::的SWFLoader :: contentLoaderInfo_completeEventHandler()

这是Flex中的错误还是我如何使用它?看起来它可能是一个线程错误,但因为Flex不支持有点令人困惑的线程。

5 个答案:

答案 0 :(得分:1)

是否有可能在组件完全初始化之前添加子项?也许在广播Event.COMPLETE后尝试添加一个孩子?

它可能不支持线程,但它仍然是异步的......

答案 1 :(得分:1)

numChildren无法有效引用children数组中的现有索引。 AS3中的数组从0开始编制索引。这意味着数组中的最后一项与索引numChildren - 1相同,而不是numChildren。

尝试addChildAt(child,numChildren - 1);

答案 2 :(得分:0)

我注意到,当重新生成已在显示列表中的UIComponent时,通常会发生这种情况。你在这种情况下重新养育了吗?

答案 3 :(得分:0)

好吧,就像一个涂料,我试图将一个孩子添加到一个容器中,即使它已经存在,因此令人困惑的“错误的插入索引”消息。

答案 4 :(得分:0)

比照http://forums.devshed.com/flash-help-38/scroll-pane-scroll-bars-not-working-818174.html - 您需要做的是将子项添加到显示对象,然后将滚动窗格的源设置为显示对象。有点像......

代码:

var myDisplay : DisplayObject = new DisplayObject();

myDisplay.addChild(myChild1);
myDisplay.addChild(myChild2);
myDisplay.addChild(myChild3);
myDisplay.addChild(myChild4);

ScrollPane.source = myDisplay;
ScrollPane.update();