0

所以我有以下代码。

    <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>

有一个带有 html 文本的 RichEditableText (text1),带有生成一些事件 (foobar) 的 href。问题是链接的一部分不起作用。为了简单起见,我没有包含从 textFlow 中捕获事件的代码,但是您可以看出该链接不起作用,因为对于链接的第一部分,鼠标光标不会变成手形光标。从链接开始到前 9 个左右,鼠标光标将保持为指针,但如果您将鼠标移过前 9 个,光标将变为手形光标。如果删除字符串的数字部分,整个链接将停止响应。

这似乎是宽度和文本对齐的问题。如果您没有在 text1 上定义宽度,问题就会消失。但如果你定义了固定宽度或百分比宽度,问题又来了。我还尝试了不同的文本对齐方式。如果您尝试将文本向左对齐(开始、对齐、向左)的任何对齐方式,它会正常工作。但是,如果您使用对齐方式将文本从左边缘(中心、右侧、末端)对齐,问题就会再次出现。

有人知道为什么会发生这种情况吗?任何解决方案?

4

1 回答 1

1

我遇到了同样的问题。不知道为什么会这样。我确实找到了解决方案。它确实有一个缺点,即使整个文本字段可点击,而不仅仅是 URL。在我的应用程序中,我从 XML 动态创建弹性 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 为 href 和 target 值解析 htmlText 并调用 navigateToURL (flash.net.navigateToURL)。

至于事件侦听器,我发现我必须让 textflow 和 RichEditableText 鼠标悬停/移动处理程序才能显示手形光标。

希望有帮助。

于 2012-04-16T20:52:42.183 回答