使用工具提示时出现错误 #2025:提供的 DisplayObject 必须是调用者的子对象

Posted

技术标签:

【中文标题】使用工具提示时出现错误 #2025:提供的 DisplayObject 必须是调用者的子对象【英文标题】:When using Tooltips I'm getting an Error #2025: The supplied DisplayObject must be a child of the caller 【发布时间】:2015-08-21 03:00:07 【问题描述】:

当我添加工具提示然后删除工具提示时,当我单击舞台时出现以下错误:

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;

谁能看到我收到此错误的原因?

【问题讨论】:

我想我可能已经修好了。我在toolTipPopUp = null 之前添加了ToolTipManager.currentToolTip = null; 【参考方案1】:

似乎将 currentToolTip 设置为 null 可以解决问题。

if (toolTipPopUp && toolTipPopUp.stage) ToolTipManager.destroyToolTip(toolTipPopUp); ToolTipManager.currentToolTip = null; // 添加了这一行 toolTipPopUp = null;

从那以后我没有发生任何错误。

【讨论】:

以上是关于使用工具提示时出现错误 #2025:提供的 DisplayObject 必须是调用者的子对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 Provider 工具时出现 Flutter 错误

在连接SQL Server服务器时出现这样的错误提示。求高手帮忙,如能解决,万分感谢。

QProcess CLI 命令 - 指定输出保存位置时出现“错误参数”

电脑关机时出现内存错误

从命令提示符编译 CUDA 时出现链接错误

一般错误:1364:字段“dis”没有默认值