ゆっくりのデスクトップマスコットを作る2(アイコン、システムトレイ)

今回はアイコン画像を付けること。
あとはシステムトレイにアイコンを追加して、そこからアプリケーションを閉じたりできるようにしてみようと思います。


まずはアイコン画像を付ける

プロジェクト名-app.xmlファイルをいじります。


91行目〜94行目のimageタグの中に画像のパスを書いてあげます。

<icon>
<image16x16>icons/icon_016.png</image16x16>
<image32x32>icons/icon_032.png</image32x32>
<image48x48>icons/icon_048.png</image48x48>
<image128x128>icons/icon_128.png</image128x128>
</icon>



上の様に書くとsrcフォルダのiconsフォルダの中にある画像が読み込まれます。
これでアイコン画像の設定は完了です。



次にシステムトレイにアイコンを追加する。
システムトレイに出たアイコンをクリックするとアプリケーションが消えたり出現したりするようにしたいと思います。
デスクトップマスコットは常に起動させておきますから、これを実装することで邪魔になったときに素早く画面上から消せるようになります(起動はしたまま)。


コードはこんな感じ

           private function init():void{
                
                 //システムトレイをサポートしているかをチェック
                if(NativeApplication.supportsSystemTrayIcon){
                    setSystemTrayIcon(); //Windows用
                } else if(NativeApplication.supportsDockIcon){
                    setDockIcon(); //Mac用
                }
            }
            
            //システムトレイにアイコンとメニューを作成
            private function setSystemTrayIcon():void{
                var tray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
                //システムトレイにアイコンを設定する
                tray.bitmaps = [new Icon()];
                //システムトレイにメニューを設定する
                tray.menu = createRootMenu();
                //システムトレイをクリックすることで画面上に出したり消したりする。
                tray.addEventListener(ScreenMouseEvent.CLICK, function():void{
                    visible = !visible;
                });
            }
            
            //Dockにアイコンとメニューを作成
            private function setDockIcon():void{
                var tray:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
                //システムトレイにアイコンを設定する
                tray.bitmaps = [new Icon()];
                //システムトレイにメニューを設定する
                tray.menu = createRootMenu();
                //システムトレイをクリックすることで画面上に出したり消したりする。
                tray.addEventListener(ScreenMouseEvent.CLICK, function():void{
                    visible = !visible;
                });
            }
            
            //メニューを作成する
            private function createRootMenu():NativeMenu{
                var root:NativeMenu = new NativeMenu;
                var close_menu:NativeMenuItem = new NativeMenuItem("閉じる");
                close_menu.addEventListener(Event.SELECT, 
                    function(e:Event):void{
                        stage.nativeWindow.close();
                    });
                root.addItem(close_menu);
                return root;
            }


これで完成!
さらに詳しくはソースを見てね。


完成したものを起動すると


システムトレイにあるYu!のアイコンをクリックすると



消えちゃった!
でも見えないだけで起動はしています。もう一度クリックすると再び出現します。
右クリックすると閉じることもできます。


今日のはこれで以上です。


ソース