SWF 내용에서 InteractiveObject를 상속하는 모든 객체에는 해당
contextMenu
속성에 메뉴 객체를 할당하여 컨텍스트 메뉴를 지정할 수 있습니다. [앞으로 이동], [뒤로 이동], [인쇄], [품질], [확대/축소] 등의 몇 가지 명령은 기본적으로 포함됩니다. AIR 런타임에서
contextMenu
에 할당되는 메뉴 객체는 NativeMenu 유형이거나 ContextMenu 유형일 수 있습니다. Flash Player 런타임에서는 ContextMenu 클래스만 사용할 수 있습니다.
ContextMenu 및 ContextMenuItem 클래스를 사용할 때는 기본 메뉴 이벤트 또는 컨텍스트 메뉴 이벤트를 수신할 수 있습니다. 두 이벤트 모두 전달됩니다. ContextMenuEvent 객체 속성의 이점 한 가지는 contextMenuOwner가 메뉴가 연결된 객체를 식별하고
mouseTarget
이 메뉴를 열기 위해 클릭한 객체를 식별한다는 것입니다. NativeMenuEvent 객체에서는 이 정보를 사용할 수 없습니다.
다음 예제에서는 Sprite를 만들어 단순한 편집 컨텍스트 메뉴에 추가합니다.
var sprite:Sprite = new Sprite();
sprite.contextMenu = createContextMenu()
private function createContextMenu():ContextMenu{
var editContextMenu:ContextMenu = new ContextMenu();
var cutItem:ContextMenuItem = new ContextMenuItem("Cut")
cutItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, doCutCommand);
editContextMenu.customItems.push(cutItem);
var copyItem:ContextMenuItem = new ContextMenuItem("Copy")
copyItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, doCopyCommand);
editContextMenu.customItems.push(copyItem);
var pasteItem:ContextMenuItem = new ContextMenuItem("Paste")
pasteItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, doPasteCommand);
editContextMenu.customItems.push(pasteItem);
return editContextMenu
}
private function doCutCommand(event:ContextMenuEvent):void{trace("cut");}
private function doCopyCommand(event:ContextMenuEvent):void{trace("copy");}
private function doPasteCommand(event:ContextMenuEvent):void{trace("paste");}
참고:
브라우저 환경에 표시되는 SWF 내용과 달리 AIR의 컨텍스트 메뉴에는 내장 명령이 없습니다.
Flash Player 컨텍스트 메뉴 사용자 정의
브라우저나 프로젝터에서 SWF 내용의 컨텍스트 메뉴에는 항상 기본 제공 명령이 내장되어 있습니다. [설정] 및 [정보] 명령을 제외한 모든 기본 명령은 메뉴에서 제거할 수 있습니다. 스테이지 속성
showDefaultContextMenu
를
false
로 설정하면 컨텍스트 메뉴에서 이러한 명령이 제거됩니다.
특정한 표시 객체의 컨텍스트 메뉴를 사용자 정의하려면 ContextMenu 클래스의 새 인스턴스를 만들고
hideBuiltInItems()
메서드를 호출한 다음 이 인스턴스를 해당하는 DisplayObject 인스턴스의
contextMenu
속성에 지정합니다. 다음 예제에서는 동적으로 그려지는 정사각형에 임의의 색상으로 변경할 수 있는 컨텍스트 메뉴 명령을 제공합니다.
var square:Sprite = new Sprite();
square.graphics.beginFill(0x000000);
square.graphics.drawRect(0,0,100,100);
square.graphics.endFill();
square.x =
square.y = 10;
addChild(square);
var menuItem:ContextMenuItem = new ContextMenuItem("Change Color");
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,changeColor);
var customContextMenu:ContextMenu = new ContextMenu();
customContextMenu.hideBuiltInItems();
customContextMenu.customItems.push(menuItem);
square.contextMenu = customContextMenu;
function changeColor(event:ContextMenuEvent):void
{
square.transform.colorTransform = getRandomColor();
}
function getRandomColor():ColorTransform
{
return new ColorTransform(Math.random(), Math.random(), Math.random(),1,(Math.random() * 512) - 255, (Math.random() * 512) -255, (Math.random() * 512) - 255, 0);
}