'NativeMenuItem'에 해당되는 글 2건

  1. 2008.12.09 마우스 우클릭 시스템 메뉴 contextMenu
  2. 2008.11.30 윈도우창 메뉴 만들기
AIR/메뉴2008. 12. 9. 14:38

시스템 메뉴를 사용하다 보면 좌클릭 이벤트 뿐만 아니라 휠이나 우클릭 등 여러가지 사용자 이벤트를 사용하여야 하는 경우가 필요하다. 이처럼 좌클릭에 다른 이벤트가 걸려있고 다른 기능을 우클릭에서 활용하고자 할때는 AIR에서 제공하는 contextMenu를 사용한다. 일반적인 AS기반의 우클릭 메뉴에는 "player버전"과 "인쇄" 등 원치 않는 내용이 포함되어 있지만 AIR의 contextMenu는 그러한 메뉴항목이 없고 개발시에 제공하는 순수한 메뉴 항목만 제공한다.

요전에 일반 시스템(크롬)메뉴를 NativeMenu()와 NativeMenuItem()를 활용하여 만들어 보았는데 마찬가지로 우클릭 메뉴도 위의 두개의 클래스들을 가지고 만들어 준다. 그러나 contextMenu는 만든 delegator를 NativeApplication.nativeApplication.menu속성에 대입하는것이 아니고 우클릭 영역의 디스플레이 객체에 contextMenu라는 속성에 대입한다.

var rec:Sprite = new Sprite();
rec.graphics.lineStyle( 0 , 0 , 1 );
rec.graphics.beginFill( 0 , 1 );
rec.graphics.drawRect( 0 , 0 , 100 , 100 );
rec.graphics.endFill();
    
var ui:UIComponent = new UIComponent();
addChild( ui );
ui.addChild( rec );
    
var menu:NativeMenu = new NativeMenu();
var item:NativeMenuItem = new NativeMenuItem("copy");
menu.addItem( item );
rec.contextMenu  = menu;  

 

위 그림은 rec의 영역에 우클릭하여 copy라는 item을 보여주고 있다.

Posted by 버터백통
AIR/메뉴2008. 11. 30. 17:44

AIR에서 메뉴를 생성하려면 크게 2가지의 클래스가 필요하다.
NativeMenu() 클래스는 메뉴 줄기를 담는 그릇 정도라고 생각하면 좋을 것 같다. 이 자체를 메뉴로 사용한다기 보다는 NativeMenuItem()라는 클래스에 메뉴 이름이나 이벤트 등을 설정하여
NativeMenu 클래스에 addItem()하게 된다.

보통 NativeMenu는 크롬창 밑에 바로 붙는 시스템 메뉴로 사용이 되고,
NativeMenuItem는 메뉴의 이름 등 한 개 항목을 설정하는데 NativeMenuItem() 여러개를 한 개의 NativeMenu() 에 설정하면 아래 그림처럼 풀다운 메뉴로 사용된다.


참고) 그림에서 메인메뉴항목은 담는그릇인 NativeMenu와 라벨명이 "메인메뉴항목"이라고 설정된 NativeMenuItem으로 구성

또한 그림처럼 메뉴명 아래 구분 되어진 선을 추가 하고 싶을 때는 NativeMenuItem("",구분선 여부=true)라는 클래스를 생성하여 사용하는 NativeMenu()에 addItem()하면 된다. NativeMenuItem는 메뉴로서도 이용되지만 이처럼 구분선으로도 활용된다.

이들을 생성하여 윈도우의 메뉴로 설정하기 위해서는 몇가지 주의할 필요가 있다.
윈도우에서 사용할 수 있는 메뉴는 1개뿐이다. 그림처럼 주 메뉴가 2개 이상이 설정하고자 할때는 NativeMenu()에 다른 여러개의 NativeMenu()를 만들어 addSubmenu(대상NativeMenu() , 라벨 )을 사용하여 설정한다.

[주메뉴가 3개인 메뉴 트리]
mainMenu[ NativeMenu ] - subMenu[ NativeMenu ]
     - subMenu[ NativeMenu ]
     - subMenu[ NativeMenu ]

 
이처럼 만든 NativeMenu를 어플리케이션에 반영하고자 한다면  
NativeApplication.nativeApplication.menu 속성에 대입할 수 있다.
물론 윈도우가 1개일 경우에는 위처럼 직접 설정하면 되지만 여러개의 윈도우에서 각각 메뉴를 설정하고자 한다면 NativeApplication.nativeApplication.openedWindows[ 윈도우 index번호 ].menu 를 사용하여 메뉴를 설정할 수 있다. 또는 대상.stage.nativeWindow.menu 속성을 사용하여 메뉴를 설정 할 수도 있다.
Posted by 버터백통