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