第4回目となる今回は番外編です。内容は、Flex SDKの導入からProgressionによるFlashサイトの構築を解説します。
現在、Progression自体はフリーのオープンソースですが、Adobe Flashは有料です。しかし、AdobeがFlashを構築する環境を無料で提供しています。それがFlex SDKです。ここでは、Flashを使用しないでサイトを構成する際の注意点なども踏まえて、制作を行っていきます。
サンプルサイトは、前回作成したサイトと同じものを使用します。Progressionの機能に関しての説明は、第2回と第3回を参照してください。
FlashDevelop 導入
まずは制作を行う環境を導入していきます。主に、FlashDevelop[1]上で設定を行います。
FlashDevelopは、フリー、そしてオープンソース(MIT license)のソースコードエディタです。機能が非常に充実しており、多くのFlasherから支持を受けています。とてもフリーのソフトとは思えない程優秀なエディタで、ActionScriptだけでなく、XMLやHTMLのコーディングにも非常に便利です。
FlashDevelopのサポートサイトとして、「FlashDevelop.jp」があります。FlashDevelop.jpはユーザ有志によって管理、運営されており、FlashDevelopのインストール手順や使用方法などが紹介されています。FlashDevelopへのProgressionの導入手順も掲載されています。
今回、導入や設定手順は FlashDevelop.jpのページを、その都度参照します。FlashDevelopを導入されていない方は、FlashDevelop.jpを見てインストールを行ってください。
Flex SDK 導入
FlashDevelopにFlex SDKを導入しましょう。手順はFlashDevelop.jpの「インストール方法」を参考してください。Flex SDKの設定途中の[Step.4]の中に、プレビューの設定がありますが、どちらの方法を選んでもらっても構いません。
Progression 導入
次に、FlashDevelop内でProgressionを利用できるように設定します。手順は「Progression 用プロジェクトテンプレート」を参考してください。ここでは、プロジェクトの作成まで行います。プロジェクト名は[Project_sdk]としましょう。
プロジェクト設定
プロジェクトを作成したら、その他の設定を行います。ツールバーの[プロジェクト]→[プロパティー]を選択してください。
表示されるプロパティー設定パネルから、[サイズ]を「640px × 480px」に変更します。
プロジェクト[Project_sdk]の設定は完了しました。このプロジェクトを作成した時、もう一つ[Preloader]というプロジェクトが作成されます。プロジェクトパネルから、プロジェクト[Preloader]をダブルクリックし、プロジェクトを変更します。プロジェクト[Preloader]も同様に、ツールバーからサイズを「640px × 480px」に変更します。設定が完了したら、プロジェクトを[Project_sdk]に戻します。
サイト制作
ここまで設定が完了したら、サイトの構成要素となるシーンや、ボタンを作成していきます。サンプルサイトの詳細は、第2回、第3回を参照してください。
通常、Flashを使用してサイトを構築する際は、画像などはFlaファイル(index.fla)の中で、定義されているシンボルとして登録するだけで使用できます。しかし、今回はFlex SDKを使用していますので手順が少し違います。
Flex SDKを使用する場合、すべてのシンボルをクラスとして定義する必要があります。Flashを使用する時は、作成したシンボルに画像を貼り付けるだけで済みましたが、今回は表示される画像データもクラス内に埋め込み、ソースを記述して定義する必要があります。画像を埋め込む際に使用するのは「Embed」タグというものです。また、画像データもプロジェクト内で保持する必要があります。
こちらから画像データを取得してください。そして、プロジェクトの[src]内に「images」という名前のフォルダを作成します。その中にダウンロードした画像データを移動します。
まず、トップページの背景となる「HomeBG」クラスを定義します。Progressionテンプレートを使用しましょう。プロジェクトの[src]で右クリックから[新規作成]→[progression4.0]→[New MyCastSprite]を選択し、ファイル名を「HomeBG」に設定してください。
作成した「HomeBG」クラスを開いてください。Embedタグを使用し、ソースを書きます。これから画像を埋め込む記述はこのようにします。
「images」フォルダの中にある、画像「homeBG.png」と関連付けることができます。「source = 」の先はパスを表しますので、パッケージが変わった際などは注意が必要です。「Emb」というクラスを作成し、「Bitmap」型でインスタンス生成を行います。インスタンスを貼り付けると完了です。この設定で、普段Flashで定義しているシンボルと同じような扱い方が可能になります。Bitmapはインポートしておきましょう。
ファイルが多くなるため、プロジェクトの[src]内に「pages」というフォルダを作成し、「HomeBG」ファイルのパッケージ名を修正しましょう。Embedのsourceのパスにも修正が必要です。
では、今定義した「HomeBG」のインスタンスを表示させましょう。「Index.as」を開いてください。「HomeBG」クラスをインポートし、インスタンスを生成し表示させます。
記述し終えたら、ムービーを書き出して確認しましょう。
サイト構成シーン作成
続いて、シーンを作成していきます。トップページから遷移する2つの「AboutScene」シーン、「GalleryScene」シーンを作成します。[src]内に「scenes」フォルダを作成します。その中にテンプレートから「MySceneObject」を選択します。それぞれファイル名を「AboutScene」、「GalleryScene」に設定します。「IndexScene」ファイルも「scenes」フォルダに移動し、パッケージ名を変更します。
ファイルを移動したら、「Index.as」内で、「IndexScene」クラスをインポートしてください。「IndexScene」クラス内に、シーンを追加する処理を記述します。
次に、「GalleryScene」シーンから遷移する3つのシーン、「AmericanScene」「FrenchScene」「MameScene」を作成します。先ほどと同じようにテンプレートから「scenes」内にシーンを作成します。
シーンを作成したら、「GalleryScene」ファイルを開き、シーンを追加する処理を設定します。
これで、サイトを構成するシーンの作成と、シーン同士を繋げる設定まで完了しました。
ボタンの作成
次に、シーン同士を移動する為のボタンを作成します。トップページから遷移する部分だけを作成します。まず、トップページから遷移するのは2つのシーンですので、ボタンは2つ必要です。さらに、トップページへ戻るためのボタンも必要です。最後に、外部リンク用のボタンも作成します。
では、[src]内に「ui」フォルダを作成しましょう。「ui」で右クリックから、テンプレートの「MyCastButton」を選択し、ボタン「HomeButton」「AboutButton」「GalleryButton」「ProgressionButton」を作成します。
これで、パッケージ「ui」のボタンクラスが4つ作成できました。
作成したボタンにはそれぞれ、表示させるための画像が用意されています。作成したそれぞれのクラスで、Embedタグを使用し、画像データを埋め込んで下さい。まず、「HomeButton」クラスです。Bitmapを忘れずインポートしましょう。
次に「AboutButton」クラスの設定です。
次に「GalleryButton」クラスの設定です。
最後に「ProgressionButton」クラスの設定です。
画像の埋め込み画完了したら、それぞれのクラスで、遷移先を決定します。遷移先を決定するのは、「sceneId」プロパティです。まず「HomeButton」クラスから設定していきます。コンストラクタ内の「sceneId」を設定するのですが、「HomeButton」ボタンは押した時の遷移先が「IndexScene」シーンなので、デフォルトのままで問題ありません。
続いて、「AboutButton」クラスの設定です。さきほど、「AboutScene」シーンの「name」プロパティで「about」と設定しました。「about」は「index」に追加された形なので、「/index/about」を「sceneId」に設定します。
「GalleryScene」クラスも同様に設定します。
「ProgressionButton」ボタンは外部リンク用のボタンなので、シーン遷移は行いません。「sceneId」プロパティをコメントアウトし、外部リンク用の「href」プロパティを設定します。リンク先はProgressionの公式サイトに設定します。
ボタンの設定が完了しました。今作成したボタンはすべてトップページに表示されるので、「IndexScene」クラス内で表示設定を行います。
「IndexScene」ファイルを開いてください。それぞれのインスタンスを生成し、イベント「atSceneLoad」で表示設定を、イベント「atSceneUnload」で削除処理を記述します。それぞれのボタンのインポートを忘れずに行ってください。
設定が完了したら、ムービーを書き出して確認しましょう。ボタンが表示され、それぞれのボタンを押すとシーンが遷移しているのがログで確認できます。
Aboutページの項目作成
次に、AboutSceneに遷移した際の表示オブジェクトを設定していきます。[src]→[pages]にテンプレートから「MyCastSprite」を選択し、ファイル名を「AboutPage」にしてください。「AboutPage」クラスも画像データを埋め込みます。以下のように記述します。
「AboutPage」クラスに画像の埋め込みが完了したら、「AboutScene」シーンで画像を表示させます。「AboutScene」ファイルを開いてください。インポートも忘れず行ってください。
設定が完了したら、ムービーを書き出して確認しましょう。表示されている「AboutButton」ボタンを押して、「AboutScene」シーンに遷移すると、表示オブジェクトの「AboutPage」が表示されているのが確認できます。
Galleryページの項目作成
続いて、「GalleryScene」シーンに遷移した際に表示されるオブジェクトの設定を行います。「GalleryScene」シーンで表示されるオブジェクトは、「GalleryPage」「AmericanButton」「FrenchButton」「MameButton」の4つです。まずは、表示オブジェクト「GalleryPage」から作成します。
[src]→[pages]内にテンプレートから「MyCastSprite」を選択します。ファイル名は「GalleryPage」に設定します。「GalleryPage」クラスに画像を埋め込みます。
次に、ボタン「AmericanButton」「FrenchButton」「MameButton」を作成します。[src]→[ui]にテンプレートから「MyCastButton」を3つ作成します。ファイル名をそれぞれ「AmericanButton」「FrenchButton」「MameButton」に変更します。これらのボタンは、始めに作成したシーン「AmericanScene」「FrenchScene」「MameScene」に遷移するボタンです。それぞれのクラスの「sceneId」を設定しましょう。加えて、それぞれに画像を埋め込みます。まず「AmericanButton」クラスからです。
次に、「FrenchButton」の画像を埋め込みます。
最後に「MameButton」の画像を埋め込みます。
これで、「GalleryScene」シーンを構成する表示オブジェクトの設定が完了しました。実際に表示させましょう。表示の設定は「GaleryScene」クラスで行います。表示オブジェクトのそれぞれのインスタンスを作成し、イベント「atSceneLoad」内で表示設定を、イベント「atSceneUnload」で削除処理を設定しましょう。
設定が完了したら、ムービーを書き出して確認してみましょう。「GalleryScene」シーンに遷移すると、表示オブジェクト「GalleryPage」と3つのボタンが表示されます。このボタンを押すと、それぞれの対応するシーンに遷移するのがログで確認できます。
詳細ページの項目作成
シーン「AmericanScene」「FrenchScene」「MameScene」の表示オブジェクトを作成していきます。オブジェクトはシーン共通のものが5つ、シーン毎に各2つの計11個です。
シーン共通のものから作成していきます。[src]→[pages]にテンプレートから「MyCastSprite」を2つコピーします。それぞれのファイル名を「PhotoBG」、「PhotoBase」に設定します。ファイルを開き、画像を埋め込みます。まず「PhotoBG」ファイルを開いてください。
次に「PhotoBase」ファイルを開いて、以下のように修正して下さい。
次に[src]→[ui]にテンプレートから「MyCastButton」を3つコピーします。それぞれのファイル名を「CloseButton」「BackButton」「NextButton」に設定してください。それぞれの遷移先を「sceneId」プロパティに設定するのですが、「CloseButton」ボタンを押したときは「GalleryScene」シーンに遷移するので、「sceneId」プロパティは「"index/gallery"」になります。「BackButton」ボタンと「NextButton」ボタンは滞在しているシーンによって「sceneId」プロパティの値が変わります。クラスの中では、コメントアウトしておきましょう。同時に画像の埋め込みも行います。まず、「CloseButton」ファイルを開いてください。
次に「BackButton」ファイルを開いてください。
最後に、「NextButton」ファイルを開いてください。
続いて、シーン毎の表示オブジェクトを作成していきます。[src]→[pages]にテンプレートから「MyCastSprite」を6つコピーします。それぞれのファイル名を「AmericanPhoto」「AmericanText」「FrenchPhoto」「FrenchText」「MamePhoto」「MameText」に設定します。
次に、それぞれのクラスに画像の埋め込み設定を行います。それぞれのファイルに以下のソースを記述してください。
これで、表示オブジェクトの設定が完了しました。次に実際に表示の処理を設定するのですが、シーンに共通の部分は親シーンのプロパティとして保持させます。シーン共通の表示オブジェクトは5つです。これらを「GalleryScene」クラスで定義します。シーン「AmericanScene」「FrenchScene」「MameScene」に遷移してきた際は、この5つの表示オブジェクトを表示させます。また、「GalleryScene」シーンに戻った時に、5つの表示オブジェクトの削除処理を行います。つまり、削除処理は「GalleryScene」クラス内で設定します。削除処理の設定はイベント「atSceneInit」に設定します。
では、「GalleryScene」ファイルを開き、プロパティの定義と削除処理を設定します。
これで、「GalleryScene」クラスの設定が完了しました。続いてクラス「AmericanScene」「FrenchScene」「MameScene」の設定に移ります。この3つのシーンは遷移してきたときに、シーン共通の表示オブジェクトを表示させます。この設定は「atSceneLoad」イベント内に記述します。「GalleryScene」シーンはこの3つのシーンの親シーンにあたるので、「GalleryScene」クラスのプロパティには「parent」プロパティを使用してアクセスします。さらに、シーン毎によって遷移先が変わる、「BackButton」ボタンと「NextButton」ボタンの「sceneId」プロパティも、イベント「atSceneLoad」内で設定します。また、シーン毎に表示させるオブジェクトの設定も行います。同時に、イベント「atSceneUnload」内に削除処理も設定します。
まず、「AmericanScene」ファイルを開いてください。
同様に、「FrenchScene」クラスと「MameScene」クラスも設定します。
以上で設定は完了です。ムービーを書き出して確認してください。それぞれのシーンに遷移した際に表示オブジェクトが表示され、ボタンを押した時も対応のシーンに遷移しているのが確認できます。また、「GalleryScene」シーンに遷移した際は、表示オブジェクトが削除されているのも確認できます。
ロールオーバーアクション
トップページに配置されているボタン「HomeButton」「AboutButton」「GalleryButton」にロールオーバーのアクションを加えましょう。
まず、ロールオーバー時の効果の画像を定義します。[src]→[pages]にテンプレート「MyCastSprite」をコピーし、ファイル名を「Effect」としてください。「Effect」クラスを設定します。
次に「HomeButton」ファイルを開き、「Effect」クラスのインスタンスを生成し、イベント「atCastRollOver」内に表示処理を設定します。また、イベント「atCastRollOut」内に削除処理を設定します。アニメーションには「DoTweener」コマンドを使用します。
同様の設定を、「AboutButton」クラスと「GalleryButton」クラスにも行ってください。
設定が完了したらムービーを書き出して確認しましょう。ボタンにポイントが合った時に、画像が表示されるはずです。
プリローダーの作成
プリローダーを作成します。プロジェクトを[Project_sdk]から[Preloader]に変更してください。「Preloader.as」を開き、第3回のプリローダーの項目を参照して、作成してください。ソースの中身は全く一緒で構いません。ソースを記述したら、ムービーを書き出して確認しましょう。
リリースビルド書き出し
ここまで完了したら、FlashDevelop.jpの「リリースビルド書き出し」に記載されている方法でリリースビルドを書き出し、「bin」の中にある「index.html」を開き、ブラウザで確認を行ってください。ブラウザでの確認が完了したら、成功です。
まとめ
今回は結構早足で進めましたが、冒頭で言及したように、サンプルサイトやProgressionについての詳しい説明は以前の回を参照してください。
Flashを使用せずに開発を行う際に注意すべきことは、Flashではシンボルとして扱っていたものもすべてクラスで定義する必要があること、画像を埋め込む時はEmbedタグを使用すると便利である、使用する際はパスに気をつける、などが挙げられます。Flex SDK では Flash に付属の機能はもちろん使用できませんが、Flash を導入しなくても Progression を使用できるのは非常に魅力的だと思います。
なお、今回のソースはこちらからダウンロードできます。フォルダ名は[src_sdk]です。
また、今回はアニメーションを使用していませんが、簡単なアニメーション付きのサンプルコードはこちらからダウンロードできます。プロジェクト名は[Project_sample]です。サンプルコードもFlex SDKを利用しています。