2008
03.13


[此段內容可供Flex2,Flex3,ActionScript 3.0參考]

今天上課中場休息時剛好有人問到,如果想在Flex應用程式上按右鍵看到網頁網址的話該怎麼做,雖然在實務上這個應用應該是不太可能發生,不過依他的說法是為了方便使用者回報哪頁出問題了,好吧,那就來示範一下吧。

contextMenu

這篇文章其實可以延伸閱讀這篇[Flex中關閉滑鼠右鍵選單功能 (ContextMenu)],內容是差不多的。

要在現有的右鍵選單(ContextMenu)中加入一個項目,只要透過自己建立的ContextMenuItem就可以了,建立完的項目你可以在賦予新的事件處理者來進行該動作的邏輯處理,不囉說,因為這段程式非常的單純,直接看程式碼吧:

import mx.controls.Alert;
   private function init():void{
    var custItem:ContextMenuItem = new ContextMenuItem("回報網址");
    this.contextMenu.customItems.push(custItem);
    custItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,itemSelectedHandler);
   }
   
   private function itemSelectedHandler(event:ContextMenuEvent):void{
    Alert.show(this.url,"網址");
   }

沒錯,這樣就搞定了,非常簡單吧! 執行的結果可以參考下方的展示:

為了提供台大的同仁直接參考使用,我直接將原始碼開放下載。 點選我下載 


後記:雖然不能說這個機制的想法不對,但是在寫RIA應用程式時建議大家把傳統網頁一頁連到一頁的觀念給丟掉,因為你會發現RIA的應用程式可能當你感覺操作了好幾頁功能後,他還是停留在同一個HTML網頁中,依照以前我在104當SA時的習慣,會習慣在顯示錯誤時在背景偷偷的將錯誤回報回系統(可能包含功能名稱,項目,錯誤代碼等),這是一個很好的Idea,也建議若是你要解決類似這個問題,這種作法可能會是比較好的解決方案。 


相關文章:
  • [分享]Flex 4 與 Flash CS5的 API表
  • Facebook 的ActionScript API 更新到 3.3版
  • Flash on iPhone,代誌就這麼發生了
  • 用ActionScript讀取相片中的exif資訊
  • 現場直擊Flash/Flex特效瘋-8/26活動內容預告
  • 本文引用:
    文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。

    8 comments so far

    Add Your Comment
    1. 老師,我想問一下,我想在flex裡的 textarea欄位取消右鍵裡的複製貼上的功能,
      請問只寫as語法有辦法消掉嗎?因為不想讓別人使用此功能。
      如果flex不行的話,是不是要去改index.template.html裡的javascript語法,因為我有搜尋到javascript可以寫封鎖右鍵的功能,但是想先try看看flex,如果flex可以的話,我就不用再花時間去try其他的了!
      感謝老師了..Orz

    2. Dear Terry:

      再試一次看看….

    3. 老師, 我看不到這篇文章!!
      只有出現"WordPress database error: [MySQL server has gone away]"

    4. Dear levenies:

      可以的,我之前有寫過如何做,請用搜尋功能在blog找一下看看,不過"設定"項目是不可以取消掉的。

    5. 請問如何去屏蔽那些我不需要的菜單項呢?
      例如:屏蔽列印、設定

    6. Help 文件說的很清楚: An array of ContextMenuItem objects.
      Each object in the array represents a context menu item that you have defined.
      Use this property to add, remove, or modify these custom menu items.
      所以是只能有一層沒錯.

    7. 請問一下,右鍵的功能只能只有一列嗎?
      還是可以跟windows一樣有兩層,
      甚至是三層的功能嗎?

    8. 想請問一下如果要再新增一層下去該怎麼用呢?