次に、[デザイン]ビューで作成したソースコードを[ソース]ビューで修正していくことにします。まず「ソース」タブで画面を[ソース]ビューに切り替えます。
手順【2】までで自動的に作成されたソースコードは以下のようになっています。
ソースコード1 [デザイン]ビューでの設計の結果のソースコード |
<?xml version="1.0" encoding="utf-8"?> |
いくつかのポイントを確認していきましょう。
これがデスクトップ・アプリケーションを表すタグです。HTMLでいう<html>タグ、Flexでいう<mx:Application>タグと同じようにアプリケーションの種類を定義しています(Flex開発をしたことのある方へ:Flexから大きく変わったのは、このタグだけです。Flexに1つのおまじないをすることによりあっという間にAIRに早変わりというわけです)。
これはFlexで提供されるコンポーネントで共通しています。WindowedApplicationタグ以外はFlexでも同様に利用ができるコンポーネントです。
少ししつこい感じになりますが、以下ではFlex Builderのソースコード・エディタのソースコード補完機能を利用してソースコードを修正してみることにします。
これにより、全体に張り付けたコンポーネントが上から下に縦に順にレイアウトされ(vertical)、横方向に中央ぞろえ(horizontalAlign="center")、縦方向にも中央ぞろえ(verticalAlign="middle")されるようになります。また、ApplicationControlBar内の3つのボタンが中央に整列されるようになります。
ここで無駄な空行を削除しておきます。ここまでの結果のソースコードは以下のようになります。
ソースコード2 レイアウト関連の属性修正の結果のソースコード |
<?xml version="1.0" encoding="utf-8"?> |
Flex Builder 3の上部の虫のアイコンをクリックして、アプリケーションをデバッグ実行してみましょう。[メニュー]から[実行]→[SimpleTimerのデバッグ]を選ぶか、F11キーを押すことでもデバッグ実行できます。起動したSimpleTimerのイメージは以下のようになります。
実行結果を確認したら、いったん右上の[×]ボタンでアプリケーションを終了しておきます。
各コンポーネントには各種イベントを定義できます。ボタンでは「クリックイベント」が有名ですね。ほかにはマウスが動いたときに起こるイベントや、テキスト入力に文字が入力されたイベントなどが有名です。
以下のように、一番外側のタグ(mx:WindowedApplicationタグ)とボタンタグにイベントを定義し、そのイベントの「イベントハンドラ」を指定します。「イベントハンドラ」とはイベントが起こった際に何らかの処理を行う「関数」です。
タグ(id) | イベント | イベントハンドラ |
---|---|---|
<mx:WindowedApplication> | creationComplete | onCreationComplete() |
<mx:Button>(startButton) | click | onStartButtonClick() |
<mx:Button>(stopButton) | click | onStopButtonClick() |
<mx:Button>(resetButton) | click | onResetButtonClick() |
表5 イベントとイベントハンドラの定義 |
startButtonを例に取ると、「click=onStartButtonClick」という感じでプロパティとプロパティ値がタグに追加されることになります。この例を日本語に訳すると、「スタートボタンをクリックした場合、onStartButtonClick関数が呼ばれる」というような意味になります。イベントハンドラ名はここでは「on+ID+イベント種別」という規則で命名しています。
ここまでのソースコードは以下のようになります。ただし、ここまでの段階では、[ソース]ビューの左側に×印が4つ現れていて、エラーが発生している状態です。
ソースコード3 コンポーネントにイベントを定義したソースコード |
<?xml version="1.0" encoding="utf-8"?> |
次に、イベントを処理するイベントハンドラを作成します。ここからはスクリプトを書く必要があります。今回は直接MXML内にスクリプトを書くことにします。
ここで出てくる「スクリプト」が「ActionScript」です。JavaやC#、JavaScriptに似たスクリプト言語で、Javaなどを経験したことのある方はスムーズに理解できると思います(ActionScriptの基本的な部分に関しては、連載「Flashの基礎を無料で習得! ActionScript入門」を参照してください)。
では、<mx:Script>タグを作成してみましょう。
上記作業で以下のスクリプトタグが作成されます。
ソースコード4 <mx:Script>タグ |
<mx:Script> |
この「CDATA[」の次の行から実際にスクリプトを記述していくことになります。
以下のソースコードのように、4つの空のイベントハンドラを定義します。
ソースコード5 空のイベントハンドラ |
/** |
それぞれ、スコープとして「private」、関数を表す「function」を付けて、先にメソッド名を定義し、その後に、戻り値の型「void」を指定しています。
また、ASDocのコメントも付けています。JavaDocなどと同じ流儀で変数や関数にコメントを書いておくことができます。
エラーなく実行できるか確認してみましょう。先ほどはデバッグ実行をしてみましたが、今回は普通の「実行」を行ってみます。右矢印ボタンか、[メニュー]の[実行]→[SimpleTimerを実行]で実行できます。忘れずにソースコードを保存しておきましょう!
タイマー処理を実装するために、「タイマー」を利用することにします。「タイマー」は一定時間ごとに決まった処理を行いたい場合に使うオブジェクトです。
以下のソースコードを先ほど実装した関数の「前」の部分に追加します。
ソースコード6 タイマーオブジェクトなど変数/定数の実装 |
/** タイマーのインターバル */ |
「定数がアルファベット大文字」などは、ほかの言語でのコーディング規約とも同じものです。タイマーのインターバルはTimerオブジェクトの初期化のときに、カウントダウン開始時刻はスタートボタンが押されたときに時刻を保持するために後で使います。
タイマーは1秒ごとにカウントダウンしていくように作るので、タイマーのインターバルは1秒でもよいのですが、精度を高くするために間隔を短くしています(サンプル・ウィジェット完成後、インターバルを1000ミリ秒にして実験してみると、表示がおかしくなる場合があることが分かると思います)。
いよいよ次ページでは、プログラムを完成させてAIRウィジェットとしてパッケージングします。
Copyright © ITmedia, Inc. All Rights Reserved.