さて、次の手順です。
Flashの第4回までに完成したアプリケーションをFlexに移行、といきたいのですが、少々複雑な事情が発生しそうな予感です。そこで今回は話をシンプルにするために「第2回」の完成品をベースに移行する、というシナリオで進めていきたいと思います。




// ActionScript file
//まず必要なパッケージをインポートします
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.Security;
import flash.system.SecurityPanel;
import fl.controls.*;
function init():void{
//必要なインスタンスを生成しておきます。
var loader : URLLoader = new URLLoader();
var url:String = "http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=****************&large_area=Z011&count=16";
var request:URLRequest = new URLRequest(url);
var col:int = 1;
var row:int = 1;
var w:int = 110;
var h:int = 110;
var wrap_at:int = 5;
var current_shop_view:ShopView;
//XMLをリクエストするファンクション。XMLのリクエストに成功し、XMLが取得できたらxmlCompfuncを実行するようになっています。
function loadXML(url:String) :void{
loader.addEventListener(Event.COMPLETE, xmlCompfunc);
loader.load(request);
}
//ロードしたXMLからサムネイルを生成するファンクション(各サムネイルのx座標、y座標を決定します)
function xmlCompfunc(event:Event):void {
//XMLにあるネームスペースを回避します
namespace ns = 'http://webservice.recruit.co.jp/HotPepper/';
use namespace ns;
//取得できたXMLをfor eachで回します。
var results:XML = new XML(loader.data);
var itm:XML;
for each( itm in results.shop ){
var thumbnail_x:int = w * (col - 1) + 10;
var thumbnail_y:int = h * (row - 1) - 10;
var thumb:Thumb = make_shop_thumb( itm, thumbnail_x, thumbnail_y );
Cont.addChild( thumb );
col++;
if( col == wrap_at ){
row++;
col = 1;
}
}
}
//各サムネイルに対して必要な情報を当て込みます
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 );
}
return thumbnail;
}
//サムネイルがクリックされたあと、shopviewというクラスが表示されるファンクション。
function make_shop_view ( itm:XML ):Boolean {
if( current_shop_view ){
removeChild( current_shop_view );
}
var shopview:ShopView = new ShopView( itm );
addChild( shopview );
shopview.x = 450;
shopview.y = 50;
current_shop_view = shopview;
return true;
}
loadXML(url);
}

<mx:WindowedApplication ・・・>と</mx:WindowedApplication>の間に以下のコードを入力してください。<mx:Script source="Air01.as"/>これで、「Air01.as」というActionScriptのファイルをインクルードした状態になります。「Air01.as」ファイル内の変数アクセスや関数呼び出しができるようになります。
<とキーボードから入力し始めたタイミングで、「コード補完の候補」がリストで表示されます。さらに、
<mx:Sと入力すると、今回入力すべき
<sと入力するだけでも、コード補完の候補がリストされます。つまり、「mx:」とまで入力しなくても、また、タグの大文字・小文字の区別を意識しなくてもよい(※)、ということになります。
<mx:Script>の 「
<mx:Script」 の続きで、スペースキーを入力すると今度は、プロパティの補完候補がリスト表示されます。 <mx:Script source="Air01.as"/>を記述する位置ですが、
<mx:WindowedApplication ・・・>と</mx:WindowedApplication>の間でしたらどこでもかまいません。
しかし、HTMLタグを入れるときのように、あとでコードが見やすくなるように(コードの可読性をあげるために)、適切な改行や[Tab]キーによるインデントを入れてコードのレイアウトを意識しながら入力するとよいでしょう。<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">の部分に、以下のようにcreationComplete="init()"と追加します。
いかがでしょうか?
Flex側でActionScript(.as)ファイルを作成しておき、そこにコピー&ペースト、そして、Flex側のインクルードとイベントの追加で移行完了です。