При использовании всплывающих подсказок я получаю сообщение об ошибке № 2025: поставляемый объект DisplayObject должен быть дочерним по отношению к вызывающей стороне
Когда я добавляю подсказку, а затем удаляю подсказку, я получаю следующую ошибку, когда нажимаю на сцену:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::rawChildren_getChildIndex()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\SystemManager.as:2195]
at mx.managers::SystemChildrenList/removeChild()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\SystemChildrenList.as:167]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::reset()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:1379]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::targetChanged()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:892]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::checkIfTargetChanged()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:797]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::toolTipMouseOverHandler()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:1623]
Я перепробовал все, что знаю, чтобы избавиться от этого. Вот код, который я использую:
// adding
PopUpManager.addPopUp(rulerPopUp, SystemManager.getSWFRoot(this));
toolTipPopUp = ToolTipManager.createToolTip("HELLO", event.stageX, event.stageY) as ToolTip;
ToolTipManager.currentToolTip = toolTipPopUp;
swfRoot.addEventListener(MouseEvent.MOUSE_MOVE, mouseRulerMoveHandler, true, EventPriority.CURSOR_MANAGEMENT, true);
swfRoot.addEventListener(MouseEvent.MOUSE_UP, mouseRulerUpHandler, true, EventPriority.CURSOR_MANAGEMENT, true);
// removing
swfRoot.removeEventListener(MouseEvent.MOUSE_MOVE, mouseRulerMoveHandler, true);
swfRoot.removeEventListener(MouseEvent.MOUSE_UP, mouseRulerUpHandler, true);
if (toolTipPopUp && toolTipPopUp.stage) {
ToolTipManager.destroyToolTip(toolTipPopUp);
toolTipPopUp = null;
}
Кто-нибудь может увидеть причину, почему я получаю эту ошибку?
1 ответ
Похоже, установка для currentToolTip значения null устраняет проблему.
if (toolTipPopUp && toolTipPopUp.stage) {ToolTipManager.destroyToolTip (toolTipPopUp); ToolTipManager.currentToolTip = null; // добавил эту строку toolTipPopUp = null; }
У меня не было никаких ошибок с тех пор.