因此,在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不支持有点令人困惑的线程。
答案 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();