こんにちは皆さん。お久しぶりです。佐藤です。
前回の記事では、FlashとFlex2の違いについて触れ、Flex2の開発にはmxmlとActionScriptという二つの言語を使うことを紹介しました。今回はFlex2で、実際に小さなアプリケーション制作に挑んでみたいと思います。実際のコードと生成されるswf(ショックウェーブファイル)を見比べながら、Flex2の面白さを少しでもお伝えできれば、と思っています。
ところで。
話は変わりますが、もうすっかり秋ですね。芸術の秋、読書の秋、スポーツの秋…、いろいろありますが、皆さんにとって「秋」はどんな季節でしょうか?僕にとってはやはり「食欲の秋」です。暑くて暑くて食欲の湧かない夏を超えて、過ごしやすい気温になったと思えば、秋魚やら、きのこやら、新米やら。僕を太らせようとする何者かの陰謀だとしか考えられません。かつてはあんなにスリムだった僕のお腹も、椅子に座るたびにベルトの上で贅肉(ゼイニク)達が「こんにちは」と、その存在を主張してくる始末です。
そんな訳で今日は身長と体重を入力すると、理想体重を何Kgオーバーしてしまっているかを自動計算し表示するようなアプリケーションを制作することにします。ダイエットといえば、毎日ジョギングして筋トレして・・・、いやいやいや、それよりもまずは、しっかり自分の身体を自覚して、この季節においしいものを食べ過ぎてしまわないように自分を戒めることが先決です。
もちろん多くの皆さんは、日々運動を怠らず問題は無いものと思われますが、とりあえず今回は僕のお腹に免じて、是非お付き合いください。
今回は、
* 開発環境の導入 : Flex Builder 2の入手
* 初めてのFlex Builder 2 : Flex Builder 2 の基本的な使い方
* Flex2アプリケーションの作成 : mxmlとActionScript3.0入門
* アプリケーションサンプル
といった流れで説明を進めたいと思います。
開発環境の導入
まずはFlex2アプリケーションを制作するに当たり、最低限必要なものはコンパイラです。コンパイラさえあれば、mxmlやActionScriptからswfを生成することが可能です。コンパイラは、Adobe社WEBサイトより無償でダウンロードすることができます。このコンパイラさえあれば、mxmlやActionScriptをコンパイル可能です。
しかし、出来ることならば効率の良い開発を目指して、個人的にはFlex Builder2 という有償の開発環境を利用することをおススメします。これは、Javaの開発環境であるEclipseのプラグインとして提供されており(スタンドアロン版もあります)、EclipseでのJava開発とほぼ同様にFlex2の開発を行うことが出来ます。コード補完機能付きのエディタやドラッグ&ドロップによるレイアウトの調整等、開発効率を高める様々な機能があります。Flex Builder 2 は試用期間として30日間は無料で利用することが出来ますので、是非見て触ってご確認ください。
Adobe社製品ページ(コンパイラ・体験版のダウンロードもこちらから)
なお今回は、Flex Builder 2 を利用した場合として、開発の工程を説明します。Flex Builder 2は上記リンク先のページ下部にある「Flex Builder 2無償体験版」からダウンロードできます。ダウンロードが完了したら画面にしたがってインストールを進めてください。
初めてのFlex Builder 2
インストールが終了したら、Flex Builder 2を起動してください。図1のような画面になっていると思います。Flex Builder 2 による開発の場合はまず「プロジェクト」を作成しなければなりません。プロジェクトは、いくつかの種類がありますが今回は「Flex2プロジェクト」を作成します。メニューバーから、「ファイル」->「新規」->「Flexプロジェクト」と選択してください。
すると図2のようなダイアログが現れますので、ここでは、「ベーシック」を選択し次へ、プロジェクト名を適当に決めたら、「終了」ボタンを押してください。これでプロジェクトが生成されました。
図3のような画面になったでしょうか?これが、何も無い状態のFLex2アプリケーションです。mxmlファイルには<mx:Application>タグが既に自動で生成されていることと思います。これが、Flex2アプリケーションにおける土台になります。
mxml ファイルには、コードを直接編集するソースビューと、マウス操作で編集を行うデザインビューのどちらでも開発を行うことができます。切り替えは図4に示すボタンで行うことができます。ひとまずデザインビューに切り替えてみましょう。

- 図4
Flex2アプリケーションの作成
インターフェースの作成
- 図5
: 図6
まずは、インターフェースを作りましょう。先ほどのようにデザインビューにした状態で、初期状態であれば、図5のように左下にコンポーネントウインドウがあるはずです(無ければメニューバーから「ウインドウ」->「コンポーネント」)。コンポーネントウインドウから必要なコンポーネントをドラッグ&ドロップするだけで、画面上に配置することができます。図6を参考にコンポーネントを配置してみてください。左側の上から、「Labelコンポーネント」「NumericStepperコンポーネント」「Labelコンポーネント」「TextInputコンポーネント」です。真ん中の棒のようなコンポーネントは「VRuleコンポーネント」で、右側には上から「TextAreaコンポーネント」「Buttonコンポーネント」を配置しています。サイズや位置はマウス操作で調整可能です。
次にプロパティを設定します。初期状態なら右下にプロパティウインドウがあるはずです(無ければメニューバーから「ウインドウ」->「プロパティ」)。各コンポーネントをクリックし選択することでプロパティウインドウが対応する内容に切り替わります。まずは、一番左上の「Labelコンポーネント」のテキストプロパティを「身長」と設定して見てください。Labelコンポーネントに表示される内容がテキストプロパティの内容に置き換わるはずです。もう一方の「Labelコンポーネント」のテキストプロパティには「体重」、さらに「Buttonコンポーネント」には「Check!」と設定しておいてください。残りのコンポーネントにはIDプロパティを設定します。「NumericStepperコンポーネント」には「myheight」、「TextInputコンポーネント」には「myweight」、「TextAreaコンポーネント」には「result」を設定してください。さらにもう一つ、「NumericStepperコンポーネント」のデフォルトは1~10の範囲となっています。図7のように、プロパティを編集してください。
:図7
デザインビューでの編集は、きちんとソースビューにも反映されます。ソースビューに切り替えて、確認をしてみてください。以下のようになっているはずです(コンポーネントの順番やxyの座標は違うかもしれません)。
<?xml version="1.0" encoding="utf-8"?>
<http://www.adobe.com/2006/mxml" layout="absolute" width="230" eight="150">
<mx:Label x="10" y="10" text="身長"/>
<mx:NumericStepper x="10" y="36" id="myheight"/>
<mx:Label x="10" y="66" text="体重"/>
<mx:TextInput x="10" y="92" width="65" id="myweight"/>
<mx:VRule x="83" y="10" width="20" height="130"/>
<mx:TextArea x="111" y="9" width="110" height="105" id="result"/>
<mx:Button x="157" y="122" label="Check!"/>
</mx:Application>
コレで見た目は出来上がりです。あとは、機能を追加すれば完成になります。
機能の作成
機能は、ActionScriptで書きます。以下のコードを<mx:Application>の内側に挿入してください。
<mx:Script>
<![CDATA[
public function CalcIdealWeight(mheight:Number, mweight:Number):String{
var idealWeight:Number = Math.pow(mheight/100, 2)*22;
var overWeight:Number = mweight - idealWeight;
var resultText:String = "あなたの理想体重はnn" +
Math.round(idealWeight) + "Kgn";
if(overWeight > 0){
resultText += Math.round(overWeight) + "Kg のオーバー..."
}
return resultText;
}
]
</mx:Script>
mxml ファイル内では、ActionScriptは<mx:Script>タグ内に書かなければなりません。ActionScriptというプログラム言語について深く掘り下げるのは今回の主旨ではないため深くは説明しませんが、「CalcIdealWeight」と言う名前の関数を定義してあります。引数に身長と体重を渡すことで、計算結果を反映したテキストを返す関数です。
ちなみに、理想体重の計算方式は、BMI(身長×身長×22)を用いています。参考:Wikipedia:標準体重
インターフェースと機能のリンク
先ほどActionScriptで関数を作成しましたが、この関数をどこかで呼び出さなくてはなりません。ソースビューで、<mx:Button>タグを以下のように修正してください。
<mx:Button x=”157” y=”122” label=”Check!” click=”result.text = CalcIdealWeight(myheight.value, Number(myweight.text))"/>
これで、ボタンクリックで関数が呼ばれます。「NumericStepperコンポーネント」の値にはID名.valueで、「TextInputコンポーネント」の値には、ID名.text(ただしこれは文字列なので、Number()で数値に変換しています。)でアクセスし、「TextAreaコンポーネント」の表示を操作します。
アプリケーションサンプル
さて、これで本日の目標であったアプリケーションは作成できました。
そういえば、最近は女性の技術者も多いそうです。女性の体重をおおっぴらに表示するわけにはいきません。ソースビューからTextInputコンポーネントのタグを以下のように修正しておきましょう。
<mx:TextInput x=”10” y=”92” width=”65” id=”myweight” displayAsPassword=”true"/>
予定通りならば、以下のようになっているはずです(FlashPlayer Ver9以上が必要です)。
|
|
width="230" height="150" name="dieting" align="middle"
play="true" loop="false" quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
上のサンプルにはいくつか機能が追加されています。ソースはこちらです。気になる方はご覧下さい。
最後に
いかがだったでしょうか?Flex2は確かに未だ知名度が低く、情報も少ないため、今回初めてFlex2に触れたと言う方にとっては、きっとわからない事だらけだったと思います。しかし、ユーザーインターフェースの制作に関しては非常に強力なコンポーネント群を持っていることや、ActionScriptとの連携によって複雑な処理もこなす事が可能であるというメリットがあり、
AJAXを使ったものと比べても比較的容易にWebアプリケーションのリッチなユーザインターフェースを制作することができます。
今回の記事がみなさんの足がかりにでもなれば幸いです。それでは、また次回。