패키지flash.ui
클래스public final class ContextMenu
상속ContextMenu Inheritance EventDispatcher Inheritance Object

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

ContextMenu 클래스를 통해 Flash Player 컨텍스트 메뉴의 항목을 제어할 수 있습니다. 사용자가 Flash Player에서 마우스 오른쪽 버튼을 클릭하거나(Windows) Control 키를 누른 상태에서 클릭하면(Macintosh) 컨텍스트 메뉴가 열립니다. ContextMenu 클래스의 메서드 및 속성을 사용하여 사용자 정의 메뉴 항목을 추가하고 내장 컨텍스트 메뉴 항목(예: 확대 및 인쇄)의 표시 방법을 제어하거나 메뉴의 복사본을 만들 수 있습니다.

ContextMenu 객체를 지정된 버튼, 무비 클립 또는 텍스트 필드에 첨부하거나 전체 무비에 첨부할 수 있습니다. 이 작업을 수행하려면 Button, MovieClip 또는 TextField 클래스의 menu 속성을 사용합니다. menu 속성에 대한 자세한 내용은 Button.menu, MovieClip.menu 및 TextField.menu를 참조하십시오.

ContextMenu 객체에 새 항목을 추가하려면 ContextMenuItem 객체를 만든 다음 객체를 ContextMenu.customItems 배열에 추가합니다. 컨텍스트 메뉴 항목 작성에 대한 자세한 내용은 ContextMenuItem 클래스 항목을 참조하십시오.

Flash Player에는 다음과 같은 세 가지 유형의 컨텍스트 메뉴가 있습니다. 표준 메뉴는 Flash Player에서 마우스 오른쪽 버튼을 클릭했을 때 나타나고, 편집 메뉴는 선택 가능하거나 편집 가능한 텍스트 필드를 마우스 오른쪽 버튼으로 클릭했을 때 나타나며, 오류 메뉴는 SWF 파일을 Flash Player로 로드하지 못했을 때 나타납니다. 표준 메뉴와 편집 메뉴만 ContextMenu 클래스를 이용하여 수정할 수 있습니다.

사용자 정의 메뉴 항목은 항상 Flash Player 컨텍스트 메뉴의 맨 위에, 내장 메뉴 항목 위에 표시되며, 구분 표시줄이 내장 메뉴 항목과 사용자 정의 메뉴 항목을 구분합니다. 컨텍스트 메뉴에 사용자 정의 항목을 15개까지 추가할 수 있습니다. 컨텍스트 메뉴에서 [설정] 메뉴 항목을 제거할 수는 없습니다. 사용자가 자신의 컴퓨터에서 개인 정보 및 저장에 영향을 주는 설정에 액세스할 수 있으려면 Flash에 [설정] 메뉴 항목이 필요합니다. 또한 [정보] 메뉴 항목도 제거할 수 없습니다. 이 항목은 사용 중인 Flash Player의 버전을 사용자가 확인하는 데 필요합니다.

ContextMenu 객체의 메서드를 호출하려면 먼저 ContextMenu() 생성자를 사용하여 해당 객체를 만들어야 합니다.

예제를 통해 확인하십시오.

참고 사항

ContextMenuItem class
flash.display.InteractiveObject.contextMenu


Public 속성
 속성다음에 의해 정의됨
  builtInItems : ContextMenuBuiltInItems
ContextMenuBuiltInItems 클래스의 forwardAndBack, loop, play, print, quality, rewind, save 및 zoom 속성이 있는 객체입니다.
ContextMenu
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
  customItems : Array
ContextMenuItem 객체의 배열입니다.
ContextMenu
 Inheritedprototype : Object
[static] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
Public 메서드
 메서드다음에 의해 정의됨
  
ContextMenu 객체를 만듭니다.
ContextMenu
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다.
EventDispatcher
  
지정된 ContextMenu 객체의 복사본을 생성합니다.
ContextMenu
 Inherited
이벤트를 이벤트 흐름으로 전달합니다.
EventDispatcher
 Inherited
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
 Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
  
지정된 ContextMenu 객체에서 [설정]을 제외한 모든 내장 메뉴 항목을 숨깁니다.
ContextMenu
 Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher 객체에서 리스너를 제거합니다.
EventDispatcher
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
 Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
 Inherited
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
이벤트
 이벤트 요약 다음에 의해 정의됨
 Inherited Flash Player가 운영 체제에서 포커스를 얻어 활성화될 때 전달됩니다.EventDispatcher
 Inherited Flash Player가 운영 체제에서 포커스를 잃고 비활성화될 때 전달됩니다.EventDispatcher
   사용자가 컨텍스트 메뉴를 처음 생성할 때, 그러나 컨텍스트 메뉴의 내용이 표시되기 전에 전달됩니다.ContextMenu
속성 정보
builtInItems속성
builtInItems:ContextMenuBuiltInItems  [read-write]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

ContextMenuBuiltInItems 클래스의 forwardAndBack, loop, play, print, quality, rewind, savezoom 속성을 갖는 객체입니다. 이러한 속성을 false로 설정하면 지정된 ContextMenu 객체에서 해당 메뉴 항목이 제거됩니다. 이들 속성은 열거 가능하며 기본적으로 true로 설정되어 있습니다.


구현
    public function get builtInItems():ContextMenuBuiltInItems
    public function set builtInItems(value:ContextMenuBuiltInItems):void

참고 사항

customItems속성 
customItems:Array  [read-write]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

ContextMenuItem 객체의 배열입니다. 배열 내의 각 객체는 사용자가 정의한 컨텍스트 메뉴 항목을 나타냅니다. 이 속성을 사용하여 사용자 정의 메뉴 항목을 추가, 삭제 또는 수정할 수 있습니다.

새 메뉴 항목을 추가하려면 ContextMenuItem 객체를 만든 다음 Array.push()와 같은 메서드를 사용하여 customItems 배열에 추가합니다. 메뉴 항목 작성에 대한 자세한 내용은 ContextMenuItem 클래스 항목을 참조하십시오.


구현
    public function get customItems():Array
    public function set customItems(value:Array):void

참고 사항

생성자 정보
ContextMenu()생성자
public function ContextMenu()

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

ContextMenu 객체를 만듭니다.

참고 사항

메서드 정보
clone()메서드
public function clone():ContextMenu

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

지정된 ContextMenu 객체의 복사본을 생성합니다. 복사본은 원본 메뉴 객체의 모든 속성을 상속합니다.

반환값
ContextMenu — 원본 메뉴 객체의 모든 속성이 포함된 ContextMenu 객체입니다.
hideBuiltInItems()메서드 
public function hideBuiltInItems():void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

지정된 ContextMenu 객체에서 [설정]을 제외한 모든 내장 메뉴 항목을 숨깁니다. 디버거 버전의 Flash Player를 실행하는 경우에는 [디버깅] 메뉴 항목이 표시됩니다. SWF 파일에서 원격 디버깅을 사용하지 않는 경우에는 이 항목이 흐리게 표시됩니다.

이 메서드는 표준 컨텍스트 메뉴에 표시되는 메뉴 항목만 숨기며 편집 메뉴와 오류 메뉴에 표시되는 항목에는 영향을 주지 않습니다.

이 메서드는 my_cm .builtInItems의 모든 부울 멤버를 false로 설정합니다. my_cm .builtInItems에서 원하는 내장 항목에 해당하는 멤버를 true로 설정하여 항목을 선택적으로 표시할 수도 있습니다.

참고 사항

이벤트 정보
menuSelect 이벤트
이벤트 객체 유형: flash.events.ContextMenuEvent
ContextMenuEvent.type property = flash.events.ContextMenuEvent.MENU_SELECT

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

사용자가 컨텍스트 메뉴를 처음 생성할 때 컨텍스트 메뉴의 내용이 표시되기 전에 전달됩니다. 프로그램에서는 이를 통해 메뉴를 표시하기 전에 컨텍스트 메뉴 항목 집합을 수정할 수 있습니다. 사용자가 포인팅 장치의 오른쪽 버튼을 클릭하면 컨텍스트 메뉴가 생성됩니다.

menuSelect 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
contextMenuOwner메뉴가 연결된 표시 목록 객체입니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
mouseTarget사용자가 컨텍스트 메뉴를 표시하기 위해 마우스 오른쪽 버튼으로 클릭한 표시 목록 객체입니다.
target표시될 ContextMenu 객체입니다. target은 표시 목록에서 이벤트 리스너를 등록한 객체가 아닐 수도 있습니다. 표시 목록에서 현재 이벤트를 처리 중인 객체에 액세스하려면 currentTarget 속성을 사용합니다.
예제 예제 사용 방법
ContextMenuExample.as

다음 예제에서는 ContextMenuExample 클래스를 사용하여 스테이지에서 기본 컨텍스트 메뉴 항목을 제거하고 새 메뉴 항목을 추가합니다. 이 항목을 클릭하면 스테이지에 있는 사각형의 색상이 바뀝니다. 이는 다음 단계로 이루어집니다.
  1. myContextMenu 속성이 선언되어 새 ContextMenu 객체에 할당되고 redRectangle 속성(Sprite 유형)이 선언됩니다.
  2. removeDefaultItems() 메서드를 호출하여 인쇄를 제외한 모든 내장 컨텍스트 메뉴 항목을 제거합니다.
  3. addCustomMenuItems() 메서드를 호출하여 Red to Black라는 메뉴 항목을 defaultItems 배열에 추가합니다. 이때 배열의 push() 메서드를 사용합니다. menuItemSelect 이벤트 리스너가 ContextMenuItem 객체에 추가되고, 연관된 메서드 menuItemSelectHandler()가 호출됩니다. 이 메서드는 trace()를 사용하여 몇 가지 명령문을 출력합니다. 이 작업은 컨텍스트 메뉴를 열고 Red to Black을 선택할 때마다 수행됩니다. 또한 빨강 사각형이 제거되고 검정 사각형으로 바뀝니다.
  4. menuSelect 유형의 이벤트 리스너가 관련 메서드인 menuSelectHandler와 함께 추가됩니다. 여기에서는 사용자가 컨텍스트 메뉴의 항목을 열 때마다 trace()를 사용하여 세 가지 명령문을 출력합니다.
  5. addChildren()은 빨강 사각형을 그리고 이를 표시 목록에 추가하여 즉시 표시되게 합니다.
  6. 마지막으로 myContextMenuredRectangle Sprite의 컨텍스트 메뉴에 할당되어 마우스 포인터가 사각형 위에 있을 때만 사용자 정의 컨텍스트 메뉴가 표시되도록 합니다.
package {
    import flash.ui.ContextMenu;
    import flash.ui.ContextMenuItem;
    import flash.ui.ContextMenuBuiltInItems;
    import flash.events.ContextMenuEvent;
    import flash.events.ContextMenuEvent;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.text.TextField;

    public class ContextMenuExample extends Sprite {
        private var myContextMenu:ContextMenu;
        private var menuLabel:String = "Reverse Colors";
        private var textLabel:String = "Right Click";
        private var redRectangle:Sprite;
        private var label:TextField;
        private var size:uint = 100;
        private var black:uint = 0x000000;
        private var red:uint = 0xFF0000;

        public function ContextMenuExample() {
            myContextMenu = new ContextMenu();
            removeDefaultItems();
            addCustomMenuItems();
            myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);

            addChildren();
            redRectangle.contextMenu = myContextMenu;
        }

        private function addChildren():void {
            redRectangle = new Sprite();
            redRectangle.graphics.beginFill(red);
            redRectangle.graphics.drawRect(0, 0, size, size);
            addChild(redRectangle);
            redRectangle.x = size;
            redRectangle.y = size;
            label = createLabel();
            redRectangle.addChild(label);
        }

        private function removeDefaultItems():void {
            myContextMenu.hideBuiltInItems();
            var defaultItems:ContextMenuBuiltInItems = myContextMenu.builtInItems;
            defaultItems.print = true;
        }

        private function addCustomMenuItems():void {
            var item:ContextMenuItem = new ContextMenuItem(menuLabel);
            myContextMenu.customItems.push(item);
            item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler);
        }

        private function menuSelectHandler(event:ContextMenuEvent):void {
            trace("menuSelectHandler: " + event);
        }

        private function menuItemSelectHandler(event:ContextMenuEvent):void {
            trace("menuItemSelectHandler: " + event);
            var textColor:uint = (label.textColor == black) ? red : black;
            var bgColor:uint = (label.textColor == black) ? black : red;
            redRectangle.graphics.clear();
            redRectangle.graphics.beginFill(bgColor);
            redRectangle.graphics.drawRect(0, 0, size, size);
            label.textColor = textColor;
        }

        private function createLabel():TextField {
            var txtField:TextField = new TextField();
            txtField.text = textLabel;
            return txtField;
        }
    }
}




 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/ui/ContextMenu.html