我正在开发一个使用PopUpManager创建的TitleWindows应用程序,以便可以拖动它们。 ButtonBar上的按钮显示它们。经过一些测试后,我发现下面的错误是在我第三次显示TitleWindow时触发的(不是第一次或第二次,只是第三次),我尝试从ButtonBar上的Button或TabNavigator中检索工具提示在TitleWindow中(将鼠标悬停在这些组件上)。
RangeError: Error #2006: The supplied index is out of bounds.
at flash.display::DisplayObjectContainer/addChildAt()
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::rawChildren_addChildAt()
at mx.managers::SystemChildrenList/addChild()
at mx.managers::SystemManager/addChildToSandboxRoot()
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::createTip()
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::showTimer_timerHandler()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
此外,当我尝试单击按钮以第四次显示TitleWindow并且我比ToolTip更快以避免错误时,我收到此错误:
RangeError: Error #2006: The supplied index is out of bounds.
at flash.display::DisplayObjectContainer/addChildAt()
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::rawChildren_addChildAt()
at mx.managers::SystemManager/addChild()
at mx.managers::PopUpManagerImpl/addPopUp()
at mx.managers::PopUpManager$/addPopUp()
at assets.components::FloatingWindow/show()
at MethodInfo-1879()
我有一个FloatingWindow类(附加),它扩展了TitleWindow,然后我创建了一个名为SearchWindow的新类,它扩展了FloatingWindow。 ButtonBar属于扩展HBox的类。 ButtonBar具有以下功能来显示SearchWindow:
function searchButton_click(event:MouseEvent):void
{
//Show Search Window
if (searchWindow.removed == true)
{
searchWindow.map = _map;
searchWindow.webService = wsGetData;
searchWindow.show(30);
}
}
这个错误的模式很奇怪。为什么我第3次使用ToolTip获得错误,第4次使用弹出TitleWindow获得错误?问题的一部分可能是我的课程跳跃吗?我有一个自定义的ButtonBar类,其中创建了SearchWindow,这是一个基于另一个自定义类(FloatingWindow)的自定义类,它基于TitleWindow。这可能是问题的原因吗?
非常感谢任何帮助。
答案 0 :(得分:0)
查找内存泄漏。也许您的窗口不会从内存中删除,TooltipManager会保留对先前打开的实例的引用。我是个盲目的人。
答案 1 :(得分:0)
也许您的搜索窗口尚未创建。试试这个:
function searchButton_click(event:MouseEvent):void
{
//Show Search Window
if (searchWindow && searchWindow.removed)
{
searchWindow.map = _map;
searchWindow.webService = wsGetData;
searchWindow.show(30);
}
}
这至少可以阻止错误的发生。