error estranha com dicas de ferramentas e TitleWindow
-
10-07-2019 - |
Pergunta
Estou desenvolvendo um aplicativo com TitleWindows que são criados usando o PopUpManager para que possam ser arrastados. Botões em um ButtonBar exibi-los. Depois de alguns testes, eu descobri que o erro abaixo é acionado quando eu estou mostrando o TitleWindow pela terceira vez (não primeiro ou segundo, mas apenas em terceiro lugar) e eu tento recuperar a dica de ferramenta a partir de qualquer botão na ButtonBar ou o TabNavigator no TitleWindow (passando o rato sobre esses componentes).
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()
Além disso, quando eu tento clicar no botão para exibir o TitleWindow pela quarta vez e eu sou mais rápido do que a dica de ferramenta para evitar o erro, eu recebo este erro:
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()
Eu tenho uma classe FloatingWindow (em anexo) que se estende TitleWindow, e então eu estou criando uma nova classe chamada SearchWindow que estende a FloatingWindow. O ButtonBar está numa classe que se estende HBox. O ButtonBar tem a seguinte função para exibir o SearchWindow:
function searchButton_click(event:MouseEvent):void
{
//Show Search Window
if (searchWindow.removed == true)
{
searchWindow.map = _map;
searchWindow.webService = wsGetData;
searchWindow.show(30);
}
}
O padrão de este erro é estranho. Por que apenas no 3º tempo que eu recebo o erro com a descrição e 4ª vez com o Poping o TitleWindow? parte do problema poderia ser meu-Leapfrogging de aulas? Eu tenho uma classe ButtonBar personalizado, onde o SearchWindow é criado, que é uma classe personalizada baseada fora de uma outra classe personalizada (FloatingWindow), que é baseado fora TitleWindow. esta pode ser a causa do problema?
Qualquer ajuda é muito apreciada.
Solução
Procure vazamentos de memória. Talvez a sua janela não é removido da memória e TooltipManager mantém referência à instância aberta anteriormente. Ist é um tiro cego.
Outras dicas
Talvez seu searchwindow ainda não foi criado. Tente isto:
function searchButton_click(event:MouseEvent):void
{
//Show Search Window
if (searchWindow && searchWindow.removed)
{
searchWindow.map = _map;
searchWindow.webService = wsGetData;
searchWindow.show(30);
}
}
Isto deve pelo menos parar os erros aconteçam.