自由なウインドウを作成して使用するには、メインウインドウを非表示にして、 2次ウインドウを作成する必要がありますが、その前にメインウインドウとしての 準備として、いくつか設定しておく必要があります。 まず、メインウインドウを非表示にすると、デスクトップから完全に消えてしまうので、 システムトレイに登録する必要があります。 ( もし、このまま使用するのであれば、一般的な常駐アプリケーションとなります ) その為には、アイコン画像を登録する必要があるのですが、 まず、メインウインドウにタイトルアイコンを @Embed('icon.png') で埋め込んで、 そのアイコンを転用する方法を以下で説明しています。 最後に、アプリケーションとして機能できるように、システムトレイアイコンに メニューを実装しています。 タイトルアイコンとタイトル![]() ![]() systemChrome が standard では、タイトルにアイコンは表示されません。 表示させるには、systemChrome を none に変更します 01. <? xml version = "1.0" encoding = "utf-8" ?> 02. < application xmlns = "http://ns.adobe.com/air/application/1.0" > 03. 04. < id >airApplication</ id > 05. < version >1.0</ version > 06. < filename >airApplication</ filename > 07. 08. < initialWindow > 09. < title >AIR アプリケーション</ title > 10. < content >Mainw.swf</ content > 11. < x >300</ x > 12. < y >200</ y > 13. < width >600</ width > 14. < height >300</ height > 15. < systemChrome >none</ systemChrome > 16. < transparent >false</ transparent > 17. < visible >true</ visible > 18. < minimizable >true</ minimizable > 19. < maximizable >true</ maximizable > 20. < resizable >true</ resizable > 21. </ initialWindow > 22. 23. </ application > 01. <? xml version = "1.0" encoding = "utf-8" ?> 02. < mx:WindowedApplication 03. xmlns:mx = "http://www.adobe.com/2006/mxml" 04. 05. showFlexChrome = "true" 06. 07. initialize = "initData();" 08. creationComplete = "initApp1()" 09. applicationComplete = "initApp2()" 10. 11. visible = "true" 12. usePreloader = "true" 13. 14. backgroundAlpha = "1" 15. 16. alwaysInFront = "false" 17. 18. titleIcon = "@Embed('icon.png')" 19. title = "Flex" 20. > メインウインドウを非表示にする非表示にするには、initialWindow の設定で visible=false にし、 かつ WindowedApplication のプロパティで visible="false" にします 01. <? xml version = "1.0" encoding = "utf-8" ?> 02. < application xmlns = "http://ns.adobe.com/air/application/1.0" > 03. 04. < id >airApplication</ id > 05. < version >1.0</ version > 06. < filename >airApplication</ filename > 07. 08. < initialWindow > 09. < title >AIR アプリケーション</ title > 10. < content >Mainw.swf</ content > 11. < x >300</ x > 12. < y >200</ y > 13. < width >600</ width > 14. < height >300</ height > 15. < systemChrome >none</ systemChrome > 16. < transparent >false</ transparent > 17. < visible >false</ visible > 18. < minimizable >true</ minimizable > 19. < maximizable >true</ maximizable > 20. < resizable >true</ resizable > 21. </ initialWindow > 22. 23. </ application > 01. <? xml version = "1.0" encoding = "utf-8" ?> 02. < mx:WindowedApplication 03. xmlns:mx = "http://www.adobe.com/2006/mxml" 04. 05. showFlexChrome = "true" 06. 07. initialize = "initData();" 08. creationComplete = "initApp1()" 09. applicationComplete = "initApp2()" 10. 11. visible = "false" 12. usePreloader = "true" 13. 14. backgroundAlpha = "1" 15. 16. alwaysInFront = "false" 17. 18. titleIcon = "@Embed('icon.png')" 19. title = "Flex" 20. > しかし、このままではデスクトップ上から完全に消えてしまうので、 システムトレイにアイコンが表示されるようにします。 ![]() 01. <?xml version= "1.0" encoding= "utf-8" ?> 02. <mx:WindowedApplication 03. xmlns:mx= "http://www.adobe.com/2006/mxml" 04. 05. showFlexChrome= "true" 06. 07. initialize= "initData();" 08. creationComplete= "initApp1()" 09. applicationComplete= "initApp2()" 10. 11. visible= "false" 12. usePreloader= "true" 13. 14. backgroundAlpha= "1" 15. 16. alwaysInFront= "false" 17. 18. title= "Flex" 19. titleIcon= "@Embed('icon.png')" 20. > 21. 22. <mx:Script> 23. <![CDATA[ 24. 25. // ********************************************************* 26. // initialize 27. // ********************************************************* 28. public function initData(): void { 29. 30. trace( "[App:beforeDisplay]" ); 31. 32. // ********************************************************* 33. // 表示レイアウトが完成する前に、 34. // タイトルのアイコンを Image に転送しておきます 35. // initApp1 では正しいビットマップが作成されません 36. // ********************************************************* 37. app_icon.source = Object( this .titleIcon); 38. 39. } 40. 41. // ********************************************************* 42. // creationComplete 43. // ********************************************************* 44. private function initApp1(): void { 45. 46. trace( "[App:afterDisplay]" ); 47. 48. // ********************************************************* 49. // Image に転送されたアイコンを 50. // タスクトレイのアイコンとして登録します 51. // ********************************************************* 52. var bmp:BitmapData = new BitmapData(app_icon.width,app_icon.height, false , 0xC0C0C0 ); 53. bmp.draw( app_icon, null , null , "normal" ); 54. var iconBitmap:Array = new Array(); 55. iconBitmap.push( bmp ); 56. this .nativeApplication.icon.bitmaps = iconBitmap; 57. 58. } 59. 60. // ********************************************************* 61. // applicationComplete 62. // ********************************************************* 63. private function initApp2(): void { 64. 65. trace( "[App:start]" ); 66. 67. 68. } 69. ]]> 70. </mx:Script> 71. 72. <mx:Image id= "app_icon" /> 73. 74. 75. </mx:WindowedApplication> さらに、このアイコンから終了できるようにメニューを実装します ![]() 01. // ********************************************************* 02. // applicationComplete 03. // ********************************************************* 04. private function initApp2(): void { 05. 06. trace( "[App:start]" ); 07. 08. // ********************************************************* 09. // タスクトレイのアイコンにメニューを追加 10. // ********************************************************* 11. var adobe:String = "http://livedocs.adobe.com/flex/3_jp/langref/" ; 12. var nativeMenu:NativeMenu; 13. nativeMenu = new NativeMenu(); 14. // 終了 15. var menuItem:NativeMenuItem = nativeMenu.addItem( new NativeMenuItem( "終了" )); 16. menuItem.addEventListener(flash.events.Event.SELECT, 17. function(): void { 18. // 一応アイコンのビットマップをクリア 19. mx.core.Application.application.nativeApplication.icon.bitmaps = []; 20. // 終了 21. mx.core.Application.application.exit(); 22. } 23. ); 24. // セパレータ 25. menuItem = nativeMenu.addItem( new NativeMenuItem( "" , true )); 26. // サブメニューを作成 27. var nativeSubMenu:NativeMenu = new NativeMenu(); 28. nativeMenu.addSubmenu( nativeSubMenu, "Adobe Flex 3 リファレンスガイド" ); 29. // NativeMenu 30. menuItem = nativeSubMenu.addItem( new NativeMenuItem( "NativeMenu" )); 31. menuItem.addEventListener(Event.SELECT, 32. function(): void { 33. openUrl( adobe + "flash/display/NativeMenu.html" ); 34. } 35. ); 36. // NativeWindow 37. menuItem = nativeSubMenu.addItem( new NativeMenuItem( "NativeWindow" )); 38. menuItem.addEventListener(Event.SELECT, 39. function(): void { 40. openUrl( adobe + "flash/display/NativeWindow.html" ); 41. } 42. ); 43. // 実装 44. SystemTrayIcon( this .nativeApplication.icon).menu = nativeMenu; 45. 46. } 47. 48. // ********************************************************* 49. // ブラウザで開く 50. // ********************************************************* 51. public function openUrl(url:String): void { 52. 53. var req:URLRequest = new URLRequest(url); 54. navigateToURL(req, "_blank" ); 55. 56. } |