2010-06-22 94 views
1

我正在使用actionscript創建一個textbutton。下面給出代碼 。通過在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); 
     } 

現在我想只在我的事件處理函數中處理此按鈕的單擊事件。它不應該導航到點擊時給出的'href'源。 我怎樣才能做到這一點。

+0

如果你讀過我的回答其他問題,你可以看到我用''label以及有關'事件解釋說:'語法在評論 – Amarghosh 2010-06-22 08:03:25

回答

2

在完成自定義處理後,在您的事件處理函數中添加event.preventDefault();

從Adobe的文檔:http://livedocs.adobe.com/flex/3/langref/flash/events/Event.html

flash.events.Event.preventDefault():取消事件的默認行爲,如果該行爲可以被取消。


更新:

的preventDefault 不會在這種情況下工作。

您需要添加一個link事件處理程序並在event:前加上url。這是你的代碼的簡化版本:鏈接事件處理程序

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

文本區域docs

,當用戶點擊的文本中的 超鏈接由 htmlText屬性定義的調度,其中URL 從「事件:」開始。 「event:」之後的URL的其餘部分放置在 鏈接事件 對象的文本屬性中。

當您處理鏈接事件時, 超鏈接不會自動執行 ;您需要執行 處理程序中的超鏈接。您通常使用 navigateToURL()方法來執行 超鏈接。這使您可以在您的應用程序中修改 超鏈接,甚至禁止其發生 。

+0

它似乎沒有幫助,我嘗試了 – 2010-06-22 06:13:22

+0

確定。讓我試試這個出色的 – 2010-06-22 08:38:39

+1

,它運行良好。非常感謝朋友 – 2010-06-23 05:23:11