在Flex 4.5中,如何使用ActionScript而非MXML将ToolTip添加到TextFlowTLF中的InlineGraphicElement?

如何解决在Flex 4.5中,如何使用ActionScript而非MXML将ToolTip添加到TextFlowTLF中的InlineGraphicElement?

|
var newParagraph : ParagraphElement = new ParagraphElement();

var icon : InlineGraphicElement = MY_ICON;
//   icon.toolTip = \"boo\"  ????
newParagraph.addChild( icon );
我想要一个用于\“ icon \”的特定工具提示。我已经阅读过有关使用HTML和rollover和rollOut的知识(例如,谢谢,先生),但是我正在将其构建为更大的文本块的一部分;很难从增量对象切换到中间的HTML。 如果无法在图标上设置事件,是否可以在ActionScript中创建HTML位作为段落的一部分(但不是全部)? 干杯     

解决方法

        我只是遇到了同样的问题。 我找到的最简单的解决方案是将InlineGraphicElement包装在LinkElement中。 LinkElement已经分派了鼠标事件。     ,        问题(如我所确定的那样)是文本流元素不是显示对象,因此不能实现正常的显示对象行为。 您需要做的是创建一个自定义InlineGraphicElement来附加所需的事件侦听器,然后从textFlow实例中调度一个事件,以便可以在您的显示对象层次结构中的某个位置读取该事件(或您选择的针对该对象的任何方法)事件)。 通过查看LinkElement的源代码,您可以看到一个如何添加鼠标交互的好例子(请参阅createContentElement函数)。 不幸的是,InlineGraphicElement被标记为final,因此您需要复制它的功能而不是对其进行扩展。只要确保在代码中使用自定义图形元素来代替普通元素即可。 祝你好运! 编辑 以防万一,您可以通过将侦听器附加到textFlow上来捕获鼠标事件,然后使用标准方法以编程方式在元素上创建工具提示并将其放置在元素上,以找到文本流元素。     ,        当鼠标悬停在文本流组件上时,您可以进行一些命中测试。 假设您有一些像这样的文本流:
<s:RichEditableText width=\"100%\" height=\"100%\" mouseOver=\"toggleTooltip()\">
    <s:textFlow>
        <s:TextFlow>
            <s:p>
                <s:span>Some text before</s:span>
                <s:img id=\"myImg\" source=\"myImg.png\" />
                <s:span>Some text after</s:span>
            </s:p>
        </s:TextFlow>
    </s:textFlow>
</s:RichEditableText>
然后侦听整个textcomponent上的mouseOver事件。 然后要测试鼠标是否在图像上方,请实现mouseOver处理程序:
private function toggleTooltip():void {
    var graphic:DisplayObject = myImg.graphic;
    var anchor:Point = graphic.localToGlobal(new Point(0,0));

    if (mouseX >= anchor.x && mouseX <= anchor.x + graphic.width &&
        mouseY >= anchor.y && mouseY <= anchor.y + graphic.height) 
    {
        trace(\'show tooltip\');
    }
    else {
        trace(\'hide tooltip\');
    }
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?