给TextField的文本中的某一段字符串加一个点击事件

首先我要达到的效果是这样:TextField中的一段字符串有下划线,并且鼠标移动到这个字符串上面的时候是手形的,点击后Flash可以捕获到这个事件,并且这个事件中还能得到一个关于这个字符串的特定的值。

实现是这样,TextField有一个属性是htmlText,可以通过对这个属性进行赋值来达到显示html的效果。

在官方的说明中有这样一段话:

<a> 标签创建超文本链接并支持以下属性:
  • target:指定加载页面的目标窗口的名称。选项包括 _self_blank_parent_top_self 选项指定当前窗口中的当前帧,_blank 指定一个新窗口,_parent 指定当前帧的父级,而 _top 指定当前窗口中的顶级帧。
  • href:指定 URL 或 ActionScript link 事件。URL 可以是绝对路径或相对路径(相对于加载页的 SWF 文件的位置)。http://www.adobe.com 示例表示对 URL 的绝对引用;/index.html 示例表示相对引用。绝对 URL 必须以 http:// 为前缀,否则 Flash 会将其视为相对 URL。可以使用 link 事件使链接执行 SWF 文件中的 ActionScript 函数,而不是打开 URL。若要指定 link 事件,请在 href 属性中使用 event 方案,而不是 http 方案。例如,使用 href="event:myText" 而不是 href="http://myURL";当用户单击包含 event 方案的超文本链接时,文本字段将调度 link TextEvent,并将其 text 属性设置为“myText”。可随后创建一个 ActionScript 函数,每次调度 link TextEvent 时都会执行该函数。还可以使用样式表为锚标签定义 a:linka:hovera:active 样式。 

也就是说如果不是超级链接的话,可以自定义一个事件TextEvent,这个事件有一个属性是text,而这个text不是href="event:myText"中的myText

请看以下的测试代码:

var txt:TextField = new TextField();
txt.htmlText = "<u><a href='event:My TextEvent'>My TextEvent</a></u>";
txt.addEventListener(TextEvent.LINK, onLink);

addChild(txt);			

function onLink(e:TextEvent):void
{
	trace(e.text);
}

点击后输出为:

My TextEvent

如果通过此事件得到一个特定的值,可以用字典做一个映射,看代码:

var map:Dictionary = new Dictionary();

var txt:TextField = new TextField();
map["My TextEvent"] = "Hello";
txt.htmlText = StringUtil.substitute("<u><a href='event:{0}'>My TextEvent</a></u>", "My TextEvent");
txt.addEventListener(TextEvent.LINK, onLink);

addChild(txt);			

function onLink(e:TextEvent):void
{
	trace(map[e.text]);
}

输出为:

Hello

转载于:https://www.cnblogs.com/yili16438/archive/2011/04/25/2028775.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值