所以我有以下代码。
<fx:Script>
<![CDATA[
import flashx.textLayout.conversion.TextConverter;
private var stringWithLink : String = "click for some event<a href='event:foobar'>foobar 012345647890123456789</a>";
]]>
</fx:Script>
<s:RichEditableText id="text1" editable="false" selectable="false" left="0" right="0" textAlign="center"
textFlow="{TextConverter.importToFlow(stringWithLink, TextConverter.TEXT_FIELD_HTML_FORMAT)}" />
</s:WindowedApplication>
有一个带有href文本的RichEditableText(text1),其中href会生成一些事件(foobar)。问题是链接的一部分不起作用。为了简单起见,我没有包含从textFlow中捕获事件的代码,但是你可以告诉链接不起作用,因为鼠标光标不会转向链接的第一部分的手形光标。从链接的开头到第9个左右,鼠标光标将保持为指针,但如果您将鼠标移动到前9个,则光标将变为手形光标。如果删除字符串的数字部分,整个链接将停止响应。
这似乎是宽度和文本对齐的问题。如果没有在text1上定义宽度,问题就会消失。但如果您定义固定宽度或百分比宽度,问题就会出现。我也试过不同的文字对齐方式。如果您尝试任何对齐将文本左对齐(开始,对齐,左),它可以正常工作。但是如果使用对齐方式将文本与左边缘(中心,右边,末端)对齐,问题就会出现。
任何人都知道为什么会发生这种情况?任何解决方案?
答案 0 :(得分:1)
我遇到了同样的问题。不知道为什么会这样。我确实找到了解决方案。它确实有一个缺点,即使整个文本字段可以单击而不仅仅是URL。在我的应用程序中,我动态地从XML动态创建flex UI对象。所以我已经有了HTML字符串和文本对齐方便。
//htmlText - html string pulled from the xml
//align - text alignment from xml
//txt - RichEditableText object
if ((htmlText.search(/<a *href/g) >= 0) && (align.toLowerCase() != 'left')) {
txt.textFlow.addEventListener(FlowElementMouseEvent.MOUSE_MOVE, useMouseHand);
txt.addEventListener(MouseEvent.CLICK, urlClickHandler);
txt.addEventListener(MouseEvent.MOUSE_OVER, useMouseHand);
}
函数useMouseHand有一个语句:Mouse.cursor = MouseCursor.BUTTON;
函数urlClickHandler解析htmlText以获取href和目标值,并调用navigateToURL(flash.net.navigateToURL)。
就事件监听器而言,我发现我必须同时使用textflow和RichEditableText鼠标移动/移动处理程序才能显示手形光标。
希望有所帮助。