메뉴 기본 사항Flash Player 9 이상, Adobe AIR 1.0 이상 AIR 응용 프로그램의 기본 메뉴 생성에 대한 간략한 설명과 코드 예제를 보려면 Adobe Developer Connection의 다음 퀵 스타트 문서를 참조하십시오.
기본 메뉴 클래스를 사용하면 응용 프로그램이 실행되고 있는 운영 체제의 기본 메뉴 기능에 액세스할 수 있습니다. NativeMenu 객체는 응용 프로그램 메뉴(Mac OS X에서 사용할 수 있음), 윈도우 메뉴(Windows 및 Linux에서 사용할 수 있음), 컨텍스트 메뉴 및 팝업 메뉴에 대해 사용할 수 있습니다. AIR 응용 프로그램 외부에서는 컨텍스트 메뉴 클래스를 사용하여, 응용 프로그램에서 객체를 마우스 오른쪽 버튼으로 클릭하거나 cmd 키를 누른 상태에서 클릭할 때 Flash Player가 자동으로 표시하는 컨텍스트 메뉴를 수정할 수 있습니다. AIR 응용 프로그램에는 자동 컨텍스트 메뉴가 표시되지 않습니다. 메뉴 유형AIR에서는 다음 메뉴 유형을 지원합니다.
컨텍스트 메뉴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); } 기본 메뉴 구조(AIR)기본 메뉴는 기본적으로 계층 구조를 가집니다. NativeMenu 객체에는 자식 NativeMenuItem 객체가 포함됩니다. 그리고 하위 메뉴를 나타내는 NativeMenuItem 객체에는 NativeMenu 객체가 포함될 수 있습니다. 구조에서 최상위 또는 루트 레벨 메뉴 객체는 응용 프로그램 및 윈도우 메뉴의 메뉴 모음을 나타냅니다. 컨텍스트, 아이콘 및 팝업 메뉴에는 메뉴 모음이 없습니다. 다음 다이어그램에서는 일반적인 메뉴의 구조를 보여 줍니다. 루트 메뉴는 메뉴 모음을 나타내며 File 하위 메뉴와 Edit 하위 메뉴를 참조하는 두 개의 메뉴 항목을 포함합니다. 이 구조에서 File 하위 메뉴에는 자체적으로 세 개의 항목을 포함한 Open Recent Menu 하위 메뉴와 두 개의 명령 항목이 포함됩니다. Edit 하위 메뉴에는 세 개의 명령과 분리 기호가 포함됩니다. 하위 메뉴를 정의하려면 NativeMenu 및 NativeMenuItem 객체가 모두 필요합니다. NativeMenuItem 객체는 부모 메뉴에 표시되는 레이블을 정의하고 사용자가 하위 메뉴를 열 수 있게 합니다. NativeMenu 객체는 하위 메뉴의 항목에 대한 컨테이너 역할을 합니다. NativeMenuItem 객체는 NativeMenuItem submenu 속성을 통해 NativeMenu 객체를 참조합니다. 이 메뉴를 만드는 코드 예제를 보려면 기본 메뉴 예제: 윈도우 및 응용 프로그램 메뉴(AIR)를 참조하십시오. 메뉴 이벤트NativeMenu 및 NativeMenuItem 객체는 모두 preparing, displaying, select 이벤트를 전달합니다. Preparing: 객체가 사용자 상호 작용을 시작할 때마다 메뉴 및 메뉴 항목은 등록된 모든 리스너에 preparing 이벤트를 전달합니다. 상호 작용에는 키보드 단축키를 사용한 메뉴 열기 또는 항목 선택 등이 포함됩니다.
참고: preparing 이벤트는 Adobe AIR 2.6 이상에서만 사용 가능합니다.
기본 메뉴 명령에 해당하는 키(AIR)메뉴 명령에 해당하는 키(엑셀러레이터라고도 함)를 할당할 수 있습니다. 이 키 또는 키 조합을 누르면 메뉴 항목에서는 등록된 리스너에 select 이벤트를 전달합니다. 항목을 포함하는 메뉴는 호출될 명령의 응용 프로그램 또는 활성 윈도우 메뉴에 포함되어 있어야 합니다. 해당하는 키는 기본 키를 나타내는 문자열과 함께 눌러야 하는 수정자 키 배열의 두 부분으로 이루어집니다. 기본 키를 할당하려면 메뉴 항목의 keyEquivalent 속성을 해당 키의 단일 문자열로 설정합니다. 대문자를 사용하는 경우 수정자 배열에 shift 키가 자동으로 추가됩니다. Mac OS X에서는 기본 수정자가 Command 키(Keyboard.COMMAND)입니다. Windows 및 Linux에서는 Ctrl 키(Keyboard.CONTROL)입니다. 이러한 기본 키는 수정자 배열에 자동으로 추가됩니다. 다른 수정자 키를 할당하려면 원하는 키 코드가 포함된 새 배열을 keyEquivalentModifiers 속성에 추가합니다. 기본 배열은 덮어씁니다. 기본 수정자를 사용하거나 사용자 고유의 수정자 배열을 할당하면 keyEquivalent 속성에 할당하는 문자열이 대문자를 사용하는 경우 Shift 키가 추가됩니다. 수정자 키에 사용할 키 코드에 대한 상수는 Keyboard 클래스에서 정의합니다. 할당된 키 문자열이 메뉴 항목 이름 옆에 자동으로 표시됩니다. 형식은 사용자의 운영 체제 및 시스템 환경 설정에 따라 다릅니다. 참고: Keyboard.COMMAND 값을 Windows 운영 체제의 키 수정자 배열에 할당하면 해당하는 키가 메뉴에 표시되지 않습니다. 그러나 메뉴 명령을 활성화하려면 Crtl 키를 시용해야 합니다.
다음 예제에서는 메뉴 항목에 해당하는 키로 Ctrl+Shift+G를 할당합니다. var item:NativeMenuItem = new NativeMenuItem("Ungroup"); item.keyEquivalent = "G"; 이 예제에서는 수정자 배열을 직접 설정하여 Ctrl+Shift+G를 해당하는 키로 할당합니다. var item:NativeMenuItem = new NativeMenuItem("Ungroup"); item.keyEquivalent = "G"; item.keyEquivalentModifiers = [Keyboard.CONTROL]; 참고: 해당하는 키는 응용 프로그램 및 윈도우 메뉴에 대해서만 트리거됩니다. 해당하는 키를 컨텍스트나 팝업 메뉴에 추가하면 해당하는 키가 메뉴 레이블에 표시되지만 연결된 메뉴 명령은 호출되지 않습니다.
니모닉 (AIR)니모닉은 메뉴에 대한 운영 체제 키보드 인터페이스의 일부입니다. Linux, Mac OS X 및 Windows 모두에서 사용자가 키보드를 사용하여 메뉴를 열고 명령을 선택할 수 있지만 서로 약간의 차이가 있습니다. Mac OS X에서는 메뉴나 명령의 첫 번째 문자나 두 문자를 입력한 다음 return 키를 누릅니다. mnemonicIndex 속성은 무시됩니다. Windows에서는 단일 문자만 중요합니다. 기본적으로 중요한 문자는 레이블의 첫 번째 문자이지만 메뉴 항목에 니모닉을 할당하는 경우 지정하는 문자가 중요한 문자가 됩니다. 니모닉 할당 여부와 관계없이 메뉴의 두 항목이 중요한 문자가 동일한 경우 사용자 키보드와 메뉴의 상호 작용이 약간 변경됩니다. 이 경우 단일 문자를 눌러 메뉴나 명령을 선택하지 않고 문자를 필요한 만큼 여러 번 눌러 원하는 항목을 강조 표시한 다음 Enter 키를 눌러 선택을 완료해야 합니다. 일관된 비헤이비어를 유지하려면 윈도우 메뉴의 각 메뉴 항목에 고유한 니모닉을 할당하는 것이 좋습니다. Linux에서는 기본 니모닉이 제공되지 않습니다. 니모닉을 제공하려면 mnemonicIndex 속성의 값을 지정해야 합니다. 니모닉 문자를 레이블 문자열에 대한 인덱스로 지정합니다. 레이블에서 첫 번째 문자의 인덱스는 0입니다. 따라서 “Format”이라는 메뉴 항목에 “r”을 니모닉으로 사용하려면 mnemonicIndex 속성을 2로 설정합니다. var item:NativeMenuItem = new NativeMenuItem("Format"); item.mnemonicIndex = 2; 메뉴 항목 상태메뉴 항목에는 checked 및 enabled의 두 가지 상태 속성이 있습니다.
메뉴 항목에 객체 첨부NativeMenuItem 클래스의 data 속성을 사용하여 각 항목에 있는 임의의 객체를 참조할 수 있습니다. 예를 들어 “Open Recent” 메뉴에서는 각 메뉴 항목에 각 문서의 File 객체를 할당할 수 있습니다. var file:File = File.applicationStorageDirectory.resolvePath("GreatGatsby.pdf") var menuItem:NativeMenuItem = docMenu.addItem(new NativeMenuItem(file.name)); menuItem.data = file; |
|
법적 고지 사항 | Adobe 온라인 개인정보 보호정책