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