通过单击Actionscript中的锚点链接来防止导航

时间:2010-06-22 05:40:41

标签: flash actionscript

我正在使用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'源。 我怎样才能做到这一点。

1 个答案:

答案 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()方法执行   超链接。这允许您修改   超链接,甚至禁止它   在您的申请中发生。

相关问题