我正在开发一个使用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。这可能是问题的原因吗?

非常感谢任何帮助。

有帮助吗?

解决方案

查找内存泄漏。也许您的窗口不会从内存中删除,TooltipManager会保留对先前打开的实例的引用。我是个盲目的人。

其他提示

也许您的搜索窗口尚未创建。试试这个:

function searchButton_click(event:MouseEvent):void
{
    //Show Search Window
    if (searchWindow && searchWindow.removed)
    {
        searchWindow.map = _map;
        searchWindow.webService = wsGetData;
        searchWindow.show(30);
    }
}

这至少可以阻止错误的发生。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top