14 April 2008
ページ ツール |
前回はAIRアプリケーションからWebサービスを利用する手順をご紹介しました。
実際に、ホットペッパーWebサービスが提供するAPIを利用して、飲食店の店舗情報を表示するAIRアプリケーションを作成しました。
基本的な動作はできましたが、このままでは、あまり面白みがありません。せっかくのAIRアプリケーションです。Flashだけでは難しい、AIRならではのアプリケーションを作ってみたいと思いませんか?
そこで今回は、ウィンドウの形をカスタマイズする方法をご紹介します。
また、前回はサムネイルを押して表示される店舗情報を同じウィンドウの中に表示していました。今回は、サムネイルが表示されるウィンドウとは別の新しいウィンドウを作成して、その中に店舗情報を表示するように拡張してみます。
この状態でプレビューを実行してみると、ウィンドウが透明になったことがわかると思います。ですが、このままではデスクトップにサムネイルの画像が張り付いてしまっているように見えてしまいます。また、タイトルバーも消えてしまいますので、ウィンドウを動かすことができませんし、なにより、アプリケーションを終了させることができません。
次のステップからは、最小化ボタンおよび閉じるボタンと、ウィンドウをドラッグできるようにする処理を作成していきます。
これで、最小化ボタンと閉じるボタンのシンボルが作成されました。
続いて、ウィンドウの背景を作成していきます。
今回は、背景にお皿と箸のイメージを作成してみます。
*あらかじめ、前回で作成した「Title」レイヤーは削除しておきます。
<Path>_1
<Path>_1」を「dish & Chopsticks」レイヤーのx座標7.0、y座標7.0の位置に配置します。
| サイズ | 配置する座標位置 | |||
|---|---|---|---|---|
| 長辺 | 短辺 | 高さ | x | y |
| 578.0 | 467.0 | 58.0 | 21.0 | 18.0 |
| サイズ | 配置する座標位置 | |||
|---|---|---|---|---|
| 長辺 | 短辺 | 幅 | x | y |
| 448.0 | 333.0 | 58.0 | 18.0 | 21.0 |
| サイズ | 配置する座標位置 | |||
|---|---|---|---|---|
| 長辺 | 短辺 | 高さ | x | y |
| 578.0 | 467.0 | 58.0 | 21.0 | 414.0 |
| ライブラリパネル内でのシンボル名長辺短辺 | インスタンス名 | ||
|---|---|---|---|
| x | y | ||
| mini_btn | min_btn | 524.0 | 560.0 |
| close_btn | close_btn | 3.0 | 3.0 |
これで、背景とボタンが表示されるようになりました。
ですが、この状態ではウィンドウを移動することもできませんし、ボタンを押してもなにも反応しません。
次に、これらの動作を行うためのスクリプトを記述します。
/*stage上でマウスが押下されてる間、windowMove関数を実行する。*/
stage.addEventListener(MouseEvent.MOUSE_DOWN, windowMove);
function windowMove(event:MouseEvent):void {
stage.nativeWindow.startMove();
}
stage上でマウスが左クリックされている間、windowMove 関数が実行されます。windowMove 関数内では、stageを移動させる関数が実行されます。
min_btn.addEventListener(MouseEvent.MOUSE_DOWN,windowMin);
function windowMin(event:MouseEvent):void{
stage.nativeWindow.minimize();
}
close_btn.addEventListener(MouseEvent.MOUSE_DOWN, windowClose);
function windowClose(event:MouseEvent):void{
stage.nativeWindow.close();
}
ボタンがクリックされると、それぞれ、ウィンドウの最小化とウィンドウを閉じる処理が実行されます。これで、ウィンドウの移動と、ボタンの動作が追加されました。
プレビューで動作を確認してみましょう。ウィンドウが移動しましたか?ボタンはちゃんと動作していますか?
動作がおかしい場合は、インスタンスの名前やActionScriptを確認してみましょう。
次に、サムネイルをクリックして表示される店舗情報を、新しいウィンドウを開いて表示するように改造してみます。まずは、前回作成しました店舗情報表示用ムービークリップを編集します。
| レイヤー | インスタンス名 | サイズ | 配置する座標位置 | ||
|---|---|---|---|---|---|
| 幅 | 高さ | x | y | ||
| Address | address_name | 225.0 | 34.0 | 35.0 | 360.0 |
| budget_name | budget_name | 225.0 | 18.0 | 35.0 | 335.0 |
| food_name | food_name | 225.0 | 18.0 | 35.0 | 310.0 |
| genre_name | genre_name | 225.0 | 18.0 | 35.0 | 280.0 |
| shopname | shop_name | 225.0 | 18.0 | 35.0 | 35.0 |
| shop_image | shop_image | 225.0 | 195.0 |
35.0 | 65.0 |
| url_button | url_button | 100.0 | 22.0 | 160.0 | 425.0 |
これで、店舗情報表示用ムービークリップが新しい外観になりました。
最後に、サムネイルをクリックすると、新しいウィンドウが開くように処理を変更します。
function makeWindow(
transparent:Boolean,systemChrome:String,itm:XML):NativeWindow {
//ウィンドウ初期化オプション
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.type=NativeWindowType.NORMAL;
options.transparent =transparent;
options.systemChrome=systemChrome;
//ウィンドウの生成
var window:NativeWindow=new NativeWindow(options);
window.title ="新規ウィンドウ";
window.stage.align =StageAlign.TOP_LEFT;
window.stage.scaleMode =StageScaleMode.NO_SCALE;
window.stage.stageWidth =320;
window.stage.stageHeight=500;
window.visible =true;
var shopview:ShopView = new ShopView( itm );
window.stage.addChild( shopview );
return window;
}
このmakeWindow関数を実行することで、新しいウィンドウが作成されます。
//各サムネイルに対して必要な情報を当て込みます
function make_shop_thumb (itm:XML, thumbnail_x:int, thumbnail_y:int ):Thumb {
//XMLにあるネームスペースの回避
namespace ns = 'http://webservice.recruit.co.jp/HotPepper/';
use namespace ns;
//ThumbというムービークリップにXMLの要素を当て込みます
var thumbnail:Thumb = new Thumb(itm);
thumbnail.x = thumbnail_x;
thumbnail.y = thumbnail_y;
//サムネイルがクリックされた場合、その詳細画面が表示されるようにします。
thumbnail.addEventListener(MouseEvent.CLICK, thumbnail_click);
function thumbnail_click (event:Event):void {
//make_shop_view( itm );
var window0:NativeWindow;
window0=makeWindow(true,NativeWindowSystemChrome.NONE,itm);
window0.stage.addEventListener(MouseEvent.MOUSE_DOWN, windowMove2);
function windowMove2(event:MouseEvent):void {
window0.startMove();
}
var shop_close_btn:shop_close = new shop_close();
window0.stage.addChild(shop_close_btn);
shop_close_btn.addEventListener(MouseEvent.MOUSE_DOWN, windowClose2);
function windowClose2(event:MouseEvent):void{
window0.close();
}
}
return thumbnail;
}
[制御]メニューの[ムービープレビュー]を選択し、動作を確認します。
サムネイルをクリックすると、新しいウィンドウに店舗情報が表示されます。
それぞれのウィンドウの閉じるボタンをクリックすると、ウィンドウが閉じます。
以上で、今回のチュートリアルは終了です。
次回では、Flashならではの表示効果の追加方法や、より使いやすくアプリケーションを拡張する方法をご紹介します。