Странная ошибка с подсказками и TitleWindow - PullRequest
0 голосов
/ 30 ноября 2009

Я разрабатываю приложение с TitleWindows, которое создано с помощью PopUpManager, поэтому его можно перетаскивать. Кнопки на панели кнопок отображают их. После некоторого тестирования я обнаружил, что приведенная ниже ошибка возникает, когда я показываю TitleWindow в третий раз (не первый или второй, а только третий), и я пытаюсь получить всплывающую подсказку либо из 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 в четвертый раз, и я быстрее, чем всплывающая подсказка, чтобы избежать ошибки, я получаю эту ошибку:

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. Панель кнопок имеет следующую функцию для отображения окна поиска:

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

            }

Шаблон этой ошибки странный. Почему только в 3-й раз я получаю ошибку с всплывающей подсказкой, а в 4-й раз - с всплывающим окном TitleWindow? Может ли быть частью проблемы мой скачок в занятиях? У меня есть собственный класс ButtonBar, в котором создается SearchWindow, который является пользовательским классом, основанным на другом пользовательском классе (FloatingWindow), который основан на TitleWindow. Может ли это быть причиной проблемы?

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2009

Возможно, ваше окно поиска еще не создано. Попробуйте это:

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

Это должно как минимум остановить ошибки.

0 голосов
/ 01 декабря 2009

Ищите утечки памяти. Возможно, ваше окно не удалено из памяти, и TooltipManager сохраняет ссылку на ранее открытый экземпляр. Это слепой выстрел.

...