วันนี้ลองเพิ่มเมนูให้ 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 ด้านล่างเลย