Flex 4 right click menu

วันนี้ลองเพิ่มเมนูให้ Flash ตอนคลิกเมาส์ขวาดูแล้วค้นพบอะไรบางอย่างเลยจดวิธีทำไว้ซักหน่อย ใน Flex มีเมนูให้เลือกใช้เยอะมากประมาณ 4 – 5 แบบแต่ที่สนใจคือ Context Menu เป็นเมนูที่เกิดตอนทำอะไรกับวัตถุในนั้น เช่น คลิกขวา หรือ กดค้าง วิธีใช้ก็ง่ายมาก ลองดูจาก code ด้านล่างเลย

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="200" minHeight="50"
               initialize="init(event)">
  <fx:Script>
    <![CDATA[
      import flash.net.navigateToURL;

      import mx.core.FlexGlobals;

      private function init(event:Event):void {
        // สร้างเมนูขึ้นมาใหม่ด้วยชื่อ "Open llun site"
        var siteMenu:ContextMenuItem = new ContextMenuItem("Open llun site");
        // ใส่ event เข้าไปเวลามีคนมาเลือกให้ทำอะไร
        siteMenu.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(event:Event):void {
          var request:URLRequest = new URLRequest("http://llun.in.th");
          navigateToURL(request);
        })

        // เอา context menu จาก root application จากนั้นใส่เมนูที่เราสร้างเข้าไป
        var contextMenu:ContextMenu = FlexGlobals.topLevelApplication.contextMenu;
        contextMenu.hideBuiltInItems();
        contextMenu.customItems.push(siteMenu);

      }

    ]]>
  </fx:Script>

  <s:VGroup verticalAlign="middle" horizontalAlign="center" width="100%" height="100%">
    <mx:Label text="Right click on me" />
  </s:VGroup>
</s:Application>

วิธีทำง่ายมาก แต่มีข้อพึงระวังอย่างหนึ่งคือ ชื่อของเมนูต้องไม่เป็นคำทั่วไปเช่น Save, Copy, Replace, … เพราะปุ่มจะไม่แสดงออกมา ตอนทำก็งงตั้งนานว่าทำไม ลองเปลี่ยนชื่อแล้วหายทันทีถ้าอยากลองเล่นก็ที่ Flash ด้านล่างเลย



About llun

Just a programmer

, ,