问题描述
|
所以我有以下代码。
<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的html文本的RichEditableText(text1),可生成一些事件(foobar)。问题是链接的一部分无法正常工作。为了简单起见,我没有包含用于捕获来自textFlow的事件的代码,但是您可以确定该链接无效,因为鼠标光标不会在链接的第一部分转向手形光标。从链接的开头到第一个9左右,鼠标光标将保持为指针,但是如果将鼠标移到前9个指针之外,则光标将变为手形光标。如果删除字符串的数字部分,则整个链接将停止响应。
这似乎是宽度和文本对齐的问题。如果您未在text1上定义宽度,则问题将消失。但是如果您定义固定宽度或百分比宽度,问题就会再次出现。我还尝试了不同的文本对齐方式。如果尝试将文本向左对齐(开始,对齐,左对齐)的任何对齐方式,则它可以正常工作。但是,如果您使用的对齐方式是将文本与左侧边缘(中心,右侧,末端)对齐,则问题会再次出现。
有人知道为什么会这样吗?有什么解决方案吗?
解决方法
我遇到了同样的问题。不知道为什么会这样。我确实找到了解决方案。它确实具有使整个文本字段(而不只是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和目标值,然后调用navigationToURL(flash.net.navigateToURL)。
至于事件侦听器,我发现我必须同时使用textflow和RichEditableText鼠标悬停/移动处理程序来显示手形光标。
希望能有所帮助。