我正在从TextFlow加载数据到spark:TextArea。在TextFlow中,我有'a href'元素。问题在于“链接”元素的地址。其中一些将出现在页面之外(这些我将离开而不做任何事情),其他将转到我的网站中的其他子页面(这些我必须捕获并处理代码)。
我计划抓住'点击链接'事件来决定做什么,但我不能这样做。我通过写
来阅读<a href="event:page_adress">
我可以在链接上捕获事件:旧mx中的事件:TextArea,但我不能在这里做到这一点。我试图手动添加:
addEventListener(TextEvent.Link, functionName)
但它不起作用。 当我更改为捕获MOUSE_CLICK事件时,我正在捕获该事件,但无法解析它以获取所需的地址。
有人知道怎么做吗?我不必坚持使用TextArea,但组件必须从TextFlow下载内容。
PS我注意到当我添加event:page_adress到'a href'时,链接停止工作(这意味着它可能开始抛出事件),但是我无法抓住它......
使用
从外部数据库导入PS2 TextFlowTextFlowUtil.importFromXML
我尝试在link元素中使用,点击事件但它不起作用:
<a click="myClickHandler(event)">
单击链接后,myClickHandler没有运行...
答案 0 :(得分:2)
好的,我在这个博客上找到答案:http://flexdevtips.blogspot.com/2010/10/displaying-html-text-in-labels.html
Bassicly我必须搜索整个textFlow并且在创建链接的情况下 - 手动添加事件。
我发布我的代码,以防Flexdevtips博客将来可能会失败:
/**
* Finds the first LinkElement recursively and returns it.
*/
private function findLinkElement(group:FlowGroupElement):void
{
var childGroups:Array = [];
// First check all the child elements of the current group,
// Also save any children that are FlowGroupElement
for (var i:int = 0; i < group.numChildren; i++) {
var element:FlowElement = group.getChildAt(i);
if (element is LinkElement)
{
linksArray.push(element as LinkElement);
} else if (element is FlowGroupElement)
{
childGroups.push(element);
}
}
// Recursively check the child FlowGroupElements now
for (i = 0; i < childGroups.length; i++) {
var childGroup:FlowGroupElement = childGroups[i];
findLinkElement(childGroup);
}
}
我不得不在我的代码中使用它:
linksArray = [];
findLinkElement(tt.textFlow);
var iter:int=0;
for (iter = 0 ; iter<linksArray.length ; iter++)
{
linksArray[iter].addEventListener(FlowElementMouseEvent.MOUSE_DOWN,linkSelect, false, 0, true);
}
其中tt是我的textarea,带有导入的textFlow
答案 1 :(得分:1)
也许这有帮助。我使用像这样的html链接:
<a id="link_1"> Click me </a>
html文件存储在外部。我使用importToFlow将html导入TextFlow并在Flex中添加Listener,如下所示:
myTextFlow.addEventListener(FlowElementMouseEvent.ROLL_OVER, showMe);
要获取我使用的链接的id-property:
event.flowElement.id
答案 2 :(得分:0)
刚刚找到了如何获取原始字符串:
function onClick(event:FlowElementMouseEvent):void
{
var link:LinkElement = event.flowElement as LinkElement;
var text:String = link.href;
}
这将返回标记的内容,因此您可以解析以获取参数
谢谢你的帖子,它帮助了我 许多。至少我更进了一步, 我实际上可以听听这些事件。但我仍有问题,HTML 我在RichEditableText上设置的代码 看起来像这样:
在Flex3上我可以使用 TextEvent.LINK获取参数 它的'text'属性,然后解析得到 我需要的身份证数据。但现在 我们正在开发Flex4我不能 弄清楚如何做到这一点。后 捕获FlowElementMouseEvent i 只能获取链接文本('名称'), 但不是我发送的论据 HTML代码。<a href='event:n," + id + "'>Name</a>
你有什么建议吗? 这样做?