addChild如何选择错误的插入索引?
时间:2020-03-06 14:52:05 来源:igfitidea点击:
因此,在Flex应用程序中,我通过创建新的GUI组件并调用parent.addChild()
来添加它。但是,在某些情况下,这会导致Flex肠胃出现错误。事实证明,addChild实际上是这样做的:
return addChildAt(child, numChildren);
在中断的情况下,numChildren会以某种方式关闭。导致此错误:
RangeError: Error #2006: The supplied index is out of bounds. at flash.display::DisplayObjectContainer/addChildAt() at mx.core::Container/addChildAt() at mx.core::Container/addChild() . . at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::UIComponent/dispatchEvent() at mx.controls::SWFLoader::contentLoaderInfo_completeEventHandler()
这是Flex中的错误还是我的使用方式?看起来可能是一个线程错误,但是由于Flex不支持线程,这有点令人困惑。
解决方案
我注意到,最常见的情况是在重新父代已在显示列表中的UIComponent时发生。在这种情况下,我们是否正在重新育儿?
我们是否有可能在完全初始化组件之前添加一个子级?也许在广播Event.COMPLETE之后尝试添加一个孩子?
它可能不支持线程,但仍然是异步的...
好的,就像一个涂料一样,我试图将一个孩子添加到一个容器中,即使它已经存在了,因此也出现了令人困惑的"错误的插入索引"消息。
numChildren没有有效地引用children数组中的现有索引。 AS3中的数组从0开始索引。这意味着数组中与numChildren 1(而不是numChildren)相同的最后一项。
尝试addChildAt(child,numChildren 1);