我正在使用actionscript创建一个文本按钮。 代码如下。
public function createTextButton(parentId){
var mytext:TextField = new TextField();
mytext.x = 478;
mytext.y = 225;
mytext.height = 20;
var format:TextFormat = new TextFormat();
format.font = "Hitchcock";
format.size = 20;
mytext.defaultTextFormat = format;
mytext.textColor = 0xffffff;
mytext.htmlText = '<a href="j#" >Click Here</a>';
mytext.addEventListener(MouseEvent.CLICK,paginationLinkClicked);
mytext.addEventListener(MouseEvent.MOUSE_OVER,mouseOverButton);
mytext.addEventListener(MouseEvent.MOUSE_OUT,mouseOutButton);
parentId.addChild(mytext);
}
现在我希望只在我的事件处理函数中处理此按钮的click事件。它不应该导航到点击时给出的'href'源。 我怎样才能做到这一点。
答案 0 :(得分:2)
完成自定义处理后,在事件处理程序中添加event.preventDefault();
。
来自adobe docs:http://livedocs.adobe.com/flex/3/langref/flash/events/Event.html
flash.events.Event.preventDefault():如果可以取消该行为,则取消事件的默认行为。
<强> 更新 强>
在这种情况下,preventDefault 不会。
您需要添加link
事件处理程序,并在网址前加上event:
。这是您的代码的简化版本:
public function createTextButton(event:Event):void
{
myText.htmlText = '<a href="event:j#">Click Here</a>';
myText.addEventListener(TextEvent.LINK, handle_linkClick);
}
protected function handle_linkClick(event:TextEvent):void
{
var linkText:String = event.text; // Will give you everything after `event:`. In your case: "j#"
// Custom code goes here....
}
链接事件处理程序中的TextArea docs:
用户单击时调度 由。定义的文本中的超链接 htmlText属性,其中的URL 以“event:”开头。其余部分 放入“event:”后的URL link事件的text属性 对象
当你处理链接事件时, 超链接不是自动的 执行;你需要执行 您活动中的超链接 处理程序。你通常使用 navigateToURL()方法执行 超链接。这允许您修改 超链接,甚至禁止它 在您的申请中发生。