머리나쁘면 평생고생한다더니 그말이 맞습니다!
이거 소스코드 한줄만 고치면 되는 것을 저는 그것도 모르고 계속 샘플분석했어요--;
AIR프로젝트를 만들게 되면 xml이 자동으로 만들어지게 되는데 저는 그건 제가 관리하는게 아니라고 생각했는데 아니더군요. 안에 보면 셋팅할 수 있는게 몇개 있더군요 ^^

우선 기존 윈도우틀을 없애봅시다.

File -> New -> Flex Project를 선택하시고, ProjectName은 NoneWindowApp라고 하고
Application Type은 Desktop application을 선택하시고 Finish를 선택합니다.

프로젝트이름-app.xml파일이 있을 껍니다. 이거를 보게 되면 xml로 되어있는데요.
<initialWindow>
      ...
    <systemChrome>none</systemChrome>
이놈이 주석처리 되어있는데 none을 바꿔주고 주석을 풀어봅시다!

그리고 프로젝트이름.mxml파일을 열어서 vbox에 button을 하나 추가해봅시다.
[code]<mx:VBox>
  <mx:Button label="버튼" />
</mx:VBox>
[/code]
한번 실행해봅시다.

사용자 삽입 이미지
기존의 윈도우는 사라지기는 했습니다만.... 뭔가 또다른 윈도우가 생겼네요--;

저것조차도 없애봅시다--;

<initialWindow>
     ....
    <visible>true</visible>

아까 xml파일의 visible을 true로 바꿔줍니다.
그리고 메인 mxml로 돌아와서 WindowedApplication으로 되어있는 가장 최상위태그를 Application으로 바꿔줍니다.
[code]<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

 <mx:VBox>
    <mx:Button label="버튼" />
 </mx:VBox>
</mx:Application>
[/code]
실행해봅시다.
사용자 삽입 이미지

아.....사라졌군요. 근데 닫을 수가 없군요-_-; 닫기, 최대화, 최소화 를 구현해봅시다 ^^
이 예제는 AIR개발자문서에서 제공하는 예제입니다.
[code]<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

 <mx:Script>
  <![CDATA[
   public function minimizeWindow():void
   {
    this.stage.nativeWindow.minimize();
   }

   public function maximizeWindow():void
   {
    this.stage.nativeWindow.maximize();
   }
   
   public function restoreWindow():void
   {
    this.stage.nativeWindow.restore();
   }
   
   public function closeWindow():void
   {
    this.stage.nativeWindow.close();
   }
  ]]>
 </mx:Script>
 <mx:VBox>
  <mx:Button label="Minimize" click="minimizeWindow()"/>
  <mx:Button label="Restore" click="restoreWindow()"/>
  <mx:Button label="Maximize" click="maximizeWindow()"/>
  <mx:Button label="Close" click="closeWindow()"/>
 </mx:VBox>

</mx:Application>
[/code]
stage라는 놈이 최상위에 있느 놈 같은데 거기에서 nativeWindow라 하면 그 자신의 윈도우를 말하는건가요?-_-;
아....잘모르겠네. 어쨌든 저 nativeWindow라는 객체가 그 해당윈도우를 말하는 것 같습니다.
그 객체의 close, maxmize, minimize등의 메소드를 실행하니 해당윈도우가 작동을 하니 ^^

 
Posted by 머드초보

댓글을 달아 주세요

  1. BlogIcon 에이레네 2008.04.12 01:11  댓글주소  수정/삭제  댓글쓰기

    네 맞습니다^^ stage.nativeWindow라고 하면 그 스테이지에 있는 윈도우가 참조됩니다;; 예를 들어 Application.application.stage.nativeWindow 하면 메인 어플리케이션의 윈도우가 참조되게 됩니다... 관련 내용이 AIR_IN_ACTION 2장에 나오니 얼릉 읽어보세요 ㅋㅋㅋ ^^

    • 머드초보 2008.04.14 08:19  댓글주소  수정/삭제

      아하 그렇군요 ^^
      이제 2장 읽으려고 프린트하려구요 ^^
      에이레네님 화이팅입니다 ^^

  2. 머드초보 2008.04.15 19:33  댓글주소  수정/삭제  댓글쓰기

    아...<mx:Application>태그를 사용하지 않아도 윈도우 틀을 없앨 수 있군요. 왜난몰랐지-_-;
    베타 때 예제를 분석해서 그런가 ㅠㅠ
    어쨌든 아래와 같은 방법으로 하면 돼요!
    AIR 디스크립터파일에서
    <systemChrome>none</systemChrome>
    <transparent>true</transparent>
    하고, 본 소스에서는
    <mx:WindowedApplication태그에서 showFlexChrome="false"를 주면됩니다.

  3. 검색자 2009.06.15 21:14  댓글주소  수정/삭제  댓글쓰기

    우아,,, 정말 찾고있었는데
    짱드세요 감사합니다~

    • 머드초보 2009.06.15 23:15  댓글주소  수정/삭제

      크롬 없애는 거 말씀하시는거죠?
      바로 위 댓글 방법으로 사용하세요~ 글에 있는 대로 하지마시고-_-
      방문해주셔서 감사해요~ ^^

  4. 가림토 2009.09.26 20:23  댓글주소  수정/삭제  댓글쓰기

    flex4 베타버전으로 만들어보고 있는데.
    스파크에서 작동이 안되서 여러곳을 찾았는데.
    여기서 방법을 얻은것같습니다.
    감사합니다. ^___^;;

  5. 입문생 2010.06.10 13:55  댓글주소  수정/삭제  댓글쓰기

    아 air로 어플만들려고 크롬없애는 법 찾고있었는데...
    덕분에 해결했습니다~ ^ㅡ^ 감사드려요~ ㅎㅎ
    근데 없애고 나니까 타이틀윈도우창이 움직여지질 않는데...
    원래 이런건가요??; 이부분을 어찌 해결해야할지...ㅠㅠ

    • 머드초보 2010.06.14 12:02  댓글주소  수정/삭제

      아네~^^
      원래 움직이지 않아서 직접 영역을 지정해서 move이벤트를 줘야합니다^^

 

음 뭔가 해보려고 하는데 잘 안되네요-_-;
원하는 모양은 아니지만 시스템트레이에 아이콘 띄우는 것 까지 성공했습니다--;
우선 저는 윈도우를 없애고 싶은데 이게 은근히 어렵네요-_-;

FLEX3 Beta 3에서 테스트했습니다. Beta2에서는 안됩니다.
방식이 조금 업그레이드되었어요. Beta2에서는 Shall어쩌구를 썼는데 바뀌었네요.
AIR예제니까 프로젝트 만들 때 Desktop Application으로 만들어야겠죠? ^^

예제입니다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
 applicationComplete="init();">

 <mx:Script>
  <![CDATA[
   public function init():void {
   
    var icon:Loader = new Loader();
    var iconMenu:NativeMenu = new NativeMenu();
    var visibleCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Visible"));
    var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
   
    visibleCommand.addEventListener(Event.SELECT,
     function(event:Event):void {
      stage.nativeWindow.visible = true;
     }
    );
   
    exitCommand.addEventListener(Event.SELECT,
     function(event:Event):void {
      NativeApplication.nativeApplication.icon.bitmaps = [];
      NativeApplication.nativeApplication.exit();
     }
    );
     
    if (NativeApplication.supportsSystemTrayIcon) {
     NativeApplication.nativeApplication.autoExit = false;
     icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
     icon.load(new URLRequest("icons/AIRApp_16.png"));
     var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
     systray.tooltip = "AIR application";
     systray.menu = iconMenu;
    }
 
    if (NativeApplication.supportsDockIcon){
     icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
     icon.load(new URLRequest("icons/AIRApp_128.png"));
     var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
     dock.menu = iconMenu;
    }
   }
   
   private function iconLoadComplete(event:Event):void {
    NativeApplication.nativeApplication.icon.bitmaps =
     [event.target.content.bitmapData];
   }
   
   public function hide():void {
    stage.nativeWindow.visible = false;
   }
  ]]>
 </mx:Script>
 <mx:Button label="창숨기기버튼" click="hide();"/>
 
</mx:WindowedApplication>
[/code]
air 개발자문서를 보고 약간 변형에서 작성해봤습니다.
참숨기기버튼을 클릭하면 창이사라지구요. 트레이아이콘에서 오른쪽버튼을 눌러서
visible을 클릭하면 다시 생기게 만들었습니다. exit누르면 종료하게 하구요.

NativeMenuItem 클래스로 메뉴를 추가하구요.
그 객체에 addEventListener해서 Event.SELECT를 해서 함수를 지정해주면 선택된 메뉴에 대해서 지정된 함수를 호출하는 겁니다.

NativeApplication.supportsSystemTrayIcon 이거는 시스템트레이아이콘을 지원하는 놈이냐? 라고 물어보는겁니다. 윈도우는 당연히 지원하겠지요 ^^
만약 운영체제가 맥os라면 NativeApplication.supportsDockIcon라고 물어봤을 때 지원하는 것 같습니다.

크로스플랫폼(맞나-_-)형태로 제작이 되어있네요. 크로스운영체제!! 어디든 가능하게 ^^

샘플실행할 때 icons경로 밑에 AIRApp_128.png파일과 AIRApp_16.png파일이 있어야겠죠?^^

 
Posted by 머드초보

댓글을 달아 주세요

 
제가 제일 좋아하는 HelloWorld시간이군요-_-;

우선 Adobe Air를 받아야 합니다.
Window용으로 가볍게 받아서 설치합니다. 다음신공으로!
http://labs.adobe.com/downloads/air.html

Adobe Flex Builder 3 Beta 2를 받아야합니다.
Adobe 아이디가 있어야 합니다.
http://labs.adobe.com/downloads/ 
여기서 Flex Builder 3 Beta 2를 선택합니다.

여기에 AIR SDK가 포함되어 있습니다.
물론 AIR SDK만 받아서 컴파일하는 식으로 해도 되는데
전 클릭세대라서-_-;

자 우선 무쟈게 무거운 Flex Builder 3 Beta 2를 설치합시다.
StandAlone이든 Plugin방식이든 어떤 것으로 설치해도 됩니다.

Flex Builder를 실행해봅시다.

File -> New -> Flex Project를 만듭시다.
Project name은 "AirHelloWorld" 로 합니다.
Application type은 AIR를 할꺼니깐 당근 Desktop application (runs in Adobe AIR)를 선택합니다.
Finish를 클릭해서 프로젝트를 만듭시다.

[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
   layout="absolute">
 
</mx:WindowedApplication>
[/code]
기본적으로 저렇게 되어있네요. 이건 WindowedApplication이라는 컴포넌트를 사용하는군요.
저기에 HelloWorld를 찍어봅시다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
   layout="absolute"
title="Hello World">
<mx:Style>
Application
{
background-image:"";
background-color:"";
background-alpha:"0.5";
}
</mx:Style>
<mx:Label text="Hello AIR" horizontalCenter="0" verticalCenter="0"/>
</mx:WindowedApplication>
[/code]
Label컴포넌트를 하나 추가해서 Hello AIR라고 찍었네요. Flex랑 문법이 같아요-_-;
Run As를 실행해서 Adobe AIR Application을 선택하고 OK를 누릅시다.
사용자 삽입 이미지
아...예전에 빡씨게 윈도우프로그래밍을 공부하던게 생각나네요-_-;
이건뭐 디게 쉬워졌네요. 기존 C/C++기반의 윈도우즈프로그래밍보다 강력하다고는 말 못하겠지만, 웹과 연동하거나 데이터를 다루는 부분은 더욱 코딩하기 쉬워질 것 같네요.
MFC프로그래밍 해보신 분들은 알껍니다-_-;

이거를 배포해보도록 합시다-_-; install프로그램까지 친절하게 만들어주는군요-_-;

이클립스에 Flex Navigator에서 AirHelloWorld를 클릭한 뒤 export를 합시다.
그러면 Flex폴더안에 Export Release Version이라는 게 있습니다. 고걸 선택합니다.
다 default로 하고 export하는 파일의 확장자는 air인데, 이거를 더블클릭하면 자동으로 설치가 됩니다.
(물론 AIR가 설치된 Desktop에서만 되겠지요 ^^)

다음으로 넘어가면 Digital Signature라고 해서 디지털서명같은데요. 잘모르겠습니다-_-;
그냥 Create로 하나생성해서 이름쓰고, 비번정하고, 한다음에 비밀번호를 씁시다 ^^
(저작권 보호 그런건가요?-_-;)

그다음 Finish를 클릭합니다. 그러면 air파일이 생성되었습니다.
이거를 설치해봅시다.
export한 파일을 찾아서 더블클릭합니다.
사용자 삽입 이미지
그러면 저렇게 뜨는데 install을 클릭해서 설치를 해봅시다.
desktop에 아이콘을 추가할 꺼냐고 묻네요.
설치후에 application을 실행할껀가도 묻는군요.
어디다 설치할지도 묻네요. Program Files로 되어있을텐데 저기다 설치하면 자동으로 폴더가 AirHelloWorld가 만들어지게 됩니다. 설치가 완료되면...
아까 플렉스에서 실행한 화면이 뜨네요-_-;

지울때에는 프로그램 지울 때 처럼 지우세요-_-;
사용자 삽입 이미지

이거 뭔가 새로운 세계에 온 듯 하네요-_-;

따라하기 출처 - Developing AIR Applications with Adobe Flex (adobe)
 
Posted by 머드초보

댓글을 달아 주세요

  1. BlogIcon 지돌스타 2007.10.26 17:57  댓글주소  수정/삭제  댓글쓰기

    내용 잘봤습니다. ^^

  2. BlogIcon 황명규 2008.05.16 15:24  댓글주소  수정/삭제  댓글쓰기

    헐.. 구글링 하다가 air 검색 중에
    돌아 다니다 보니 종천님 블로그 왓네요 ^^;; ㅎㅎㅎ
    잘 지내시죠..?

    지금 플래쉬 플레이어 볼륨 컨트롤 기능 넣으려 여기저기 구글링 중인데 죽갓습니다 ㅠㅠ

    ㅎㅎ 하여튼 반가워욨!!!

    • 머드초보 2008.05.19 08:23  댓글주소  수정/삭제

      오! 명규님 반가워요 ^^
      플래쉬까지 손을 대시는군요 ^^
      저는 잘 지내고 있죠 ^^

  3. BlogIcon xacdo 2008.06.02 13:45  댓글주소  수정/삭제  댓글쓰기

    구글링해서 왔습니다. 잘 보고 갑니다. ^^