第4回:AIRでメニューウィンドウ作成!を試してみる
昨日からテストログを見ている時に時間があるので、
Airをやってます。
で、アプリケーションを作りたいなぁーと妄想しているので、 サンプルとして何かないか?と困っていたら、
良いのがあったのでやってみた。
やったのは、こちら
第4回:AIRでメニューウィンドウ作成!を試してみる実際に書かれている物を確認しつつ進めていった時に、
Application Descriptorの記述が変更されていたりで
動かなかった所を修正しつつ行っていく。
環境はMacBookで、
OS X 10.5.5
です。
行った場所は自分のホームディレクトリなどで実行。 例)Users/sticikes とかで。
下記は全てターミナルにて行いました。
まずはアプリケーション記述ファイルが必要になるので、同じ階層で、「stickies-app.xml」ファイルを作成・記述する。
$ cd /Users/stickies
$ touch stickies-app.xml
$ vim stickies-app.xml
記述は下記が記載されていた。
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/1.0.M4" appId="jp.masuidrive.thinkit.stickies" version="1.0">
<name>オンライン付箋</name>
<rootContent systemChrome="standard">menu.swf</rootContent>
</application>
次に「menu.mxml」を同じディレクトリにて、作成・記述する。
$ touch menu.mxml
$ vim menu.mxml
menu.mxmlへは下記を記述する。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200">
<mx:Button left="10" top="10" label="新規" id="new_btn" />
<mx:Button right="60" top="10" label="読み込み" id="load_btn" />
<mx:Button right="10" top="10" label="保存" id="save_btn" />
<mx:TextArea right="10" top="40" left="10" bottom="10" id="messages" />
</mx:WindowedApplication>
これはそのまま書かれている通りでOK。
次にswfファイルを生成する。
$ amxmlc menu.mxml
上記コマンドでコンパイルすると、「menu.swf」が生成される。
下記コマンドでswfファイルを確認する。
$ ls
menu.mxml menu.swf
これでファイルが出来たので、実際にadlコマンドで実行してみる。
$ adl stickies-app.xml
invalid application descriptor: application filename must have a non-empty value.
あーエラーになってしまった。。。
これは、冒頭に書いたとおりApplication Descriptorの記述が変わっているためなので、
「stickies-app.xml」を変更する必要がある。
$ vim stickies-app.xml
記述する内容は、下記。
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/1.5" appId="jp.masuidrive.thinkit.stickies" version="1.0">
<id>kishi-r.com.stickies</id>
<name>オンライン付箋</name>
<version>1.0</version>
<filename>stickies</filename>
<description>Hello first application</description>
<copyright>(c) 2008 </copyright>
<initialWindow>
<content>menu.swf</content>
<title>Sticies Menu</title>
<systemChrome>none</systemChrome>
<transparent>true</transparent>
<visible>true</visible>
</initialWindow>
</application>
でもう一度実行してみる。
$ adl stickies-app.xml
そうすると下記のような画面が表示されるはず。

menu01 posted by (C)kishir
次に実際にボタンを押す時の動作部分を少しやってみる。
記述するファイルは、「menu.mxml」ファイル
$ vim menu.mxml
で、下記の通り記述する。
<mx:Button left="10" top="10" label="新規" id="new_btn" />
へ「click="create();"」を追加する。
<mx:Button left="10" top="10" label="新規" id="new_btn" click="create();" />
実際に「create関数」を定義する。
定義するのは、同じファイル「menu.mxml」で、記述すると下記のようになる。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200">
<mx:Script>
<![CDATA[
public var sticky:NativeWindow;
public function create():void {
var initOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
sticky = new NativeWindow(true, initOptions);
messages.text += ">> Created new sticky\n"; // debug display
}
]]>
</mx:Script>
<mx:Button left="10" top="10" label="新規" id="new_btn" click="create();" />
<mx:Button right="60" top="10" label="読み込み" id="load_btn" />
<mx:Button right="10" top="10" label="保存" id="save_btn" />
<mx:TextArea right="10" top="40" left="10" bottom="10" id="messages" />
</mx:WindowedApplication>
実際に実行して確認してみる。
$ adl stickies-app.xml
動かない。。。
何でなのかを調べたら、ここに書いてありました。やっぱ解らない時はGoogleさんに聞くのって、問題かな?
まぁーそれは良いとして続きをやろうっと。
NativeWindow クラスのコンストラクタに変更があった模様
そうなのか。
じゃー変更しないとなーって事で、「menu.mxml」を下記のように変更する。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200">
<mx:Script>
<![CDATA[
public var sticky:NativeWindow;
public function create():void
{
var initOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
sticky = new NativeWindow(initOptions);
sticky.visible = true;
messages.text += ">> Created new sticky\n"; // debug display
}
]]>
</mx:Script>
<mx:Button left="10" top="10" label="新規" id="new_btn" click="create();" />
<mx:Button right="60" top="10" label="読み込み" id="load_btn" />
<mx:Button right="10" top="10" label="保存" id="save_btn" />
<mx:TextArea right="10" top="40" left="10" bottom="10" id="messages" />
</mx:WindowedApplication>
修正しただけだとswfファイルに反映されないので、もう一度コンパイルする必要があるので下記を実行。
$ amxmlc menu.mxml
その後にもう一度ウィンドウを立ち上げて確認する。
$ adl stickies-app.xml
立ち上げたら「新規」ボタンをクリックすると、新たにウィンドウがもう一つ立ち上がりメッセージが表示される。

menu02 posted by (C)kishir
これで新規ボタンだけ動くウィンドウが出来た。
続きはまた後で、って事で。
- Posted at:
- 2008/11/22 16:00:46
- 0 Comments
- 0 TrackBacks
- Tags:
- ActionScript
- Air
- Flex
- Trackback:
- http://kishi-r.com/2008/11/22/air_menu_window/trackback/
TrackBacks
まだ登録されていません。


Comments
まだ登録されていません。