2009-11-30 5 views
0

Je suis en train de développer une application avec TitleWindows créée à l'aide de PopUpManager pour pouvoir être déplacée. Les boutons d'un ButtonBar les affichent. Après quelques tests, j'ai découvert que l'erreur ci-dessous est déclenchée lorsque j'affiche la TitleWindow pour la troisième fois (pas la première ou la seconde, mais seulement la troisième) et j'essaie de récupérer l'info-bulle du Button sur le ButtonBar ou le TabNavigator dans TitleWindow (en passant la souris sur ces composants).Erreur étrange avec Tooltips et 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() 

Aussi, lorsque je tente en cliquant sur le bouton pour afficher la TitleWindow pour la quatrième fois et je suis plus rapide que l'info-bulle pour éviter l'erreur, je reçois cette erreur:

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() 

Je une classe FloatingWindow (attachée) qui étend TitleWindow, puis je crée une nouvelle classe appelée SearchWindow qui étend la FloatingWindow. Le ButtonBar est dans une classe qui étend HBox. Le ButtonBar a la fonction suivante pour afficher la SearchWindow:

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

      } 

Le motif de cette erreur est étrange. Pourquoi est-ce juste la 3ème fois que j'obtiens l'erreur avec l'info-bulle et la 4ème fois avec le Poping up the TitleWindow? Est-ce qu'une partie du problème pourrait être ma saute-mouton de cours? J'ai une classe ButtonBar personnalisée, où SearchWindow est créé, qui est une classe personnalisée basée sur une autre classe personnalisée (FloatingWindow), qui est basée sur TitleWindow. Cela peut-il être la cause du problème?

Toute aide est grandement appréciée.

Répondre

0

Recherchez les fuites de mémoire. Peut-être que votre fenêtre n'est pas supprimée de la mémoire et TooltipManager conserve une référence à l'instance précédemment ouverte. Ist est un tir aveugle.

+0

Cela s'est occupé de cela. Je viens de définir l'instance à null dans le gestionnaire Close. La réponse ci-dessus m'a aidé aussi, puisque je devais vérifier si l'instance existait déjà avant de la créer et de la montrer. Merci! – Gady

0

Peut-être que votre fenêtre de recherche n'a pas encore été créée. Essayez ceci:

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

Cela devrait au moins empêcher les erreurs de se produire.

+0

Cela a été utile une fois que j'ai fait ma collection de place sur les instances qui circulent. – Gady