<logic:RSSReaderLogic id="rssReaderLogic" /> |
ここまでで、いったんウィジェットを実行しておきましょう。空のロジックを追加しただけなので、特に変化がなく動作するはずです。この実行は必ず行っておきましょう。
Flex Builder 3で開発している場合、画面からクラスが呼ばれて初めて、コードのエラーチェックなどが行われるようになります。いったん実行しておけば、コーディング中に間違ったコードを書いたりした場合に、すぐにFlex Builder 3が警告してくれるようになります。
また、ここまででMXMLとロジッククラスの関係が下記のようになります。
それぞれを呼び出すときは○○Logic、viewを使ってください。画面の中で画面の要素を、ロジッククラスの中で別のメソッドを呼び出す、といった場合はもちろんthisで参照します(または何もなしで直接)。
以後、メソッドを1個1個ロジッククラスに移していきます。「getRSSFeed」メソッドの移植を例に、画面からロジックへのアクセス、ロジックから画面へのアクセスの仕方も合わせてみていきましょう。「getRSSFeed」メソッドはボタンクリック時の処理なので、「UI Event Handler」区画に移植することにします。
メソッドの移植の流れは以下になります。これは一般的な画面・ロジック分離のルールにもなっています。
「getRSSFeed」メソッドにエラーが2個残っていますが、気にせずに次にいきましょう。エラーが3個以上ある方は記事の最後のページでダウンロードできる完成品を参考にしてください。
手順の【5】で「そんなメソッドないよ」とエラーの出ていたメソッドを移植します。【5】と同じ手順で移植していきます。それぞれgetRSSFeedメソッドから呼ばれているものなので、可視性はprivateのままにします(MXMLからは見えなくてOK)。
ここで、画面の要素(rssやfeedItemList)を参照する際に、「view.」を付けても参照できない問題があります。これは、MXML側の変数の定義がprivateになっているためです。このMXML側変数の可視性はロジックから参照されるもののみpublicにしていきましょう。
移植したロジックをMXMLから参照するようにしましょう。rssReaderLogic.を付け加えればロジッククラスのメソッドを参照するようになります(ドットを忘れないように)。実行してエラーなく動いたら、移植した3つのメソッドをMXMLから削除しましょう。
可視性をpublicにしつつ、移植します。
ユーティリティ系の処理は「○○Utils」クラスにまとめておくのがよいです。「src」パッケージ直下に「util」パッケージを新規作成し、「StringUtils」クラスを新規作成します。その後、「crlf2empty」メソッドを移植してきます。可視性はpublic staticにします。
「showFeed」メソッドの最後の処理は下記のように修正されることになります。
view.myFeed.htmlText = StringUtils.crlf2empty(excerptValue); |
MXMLから「showFeed」メソッドを参照するように修正したら、また実行しておきましょう。エラーなく動いたら、移植したメソッドをMXMLから削除します。
可視性をpublicにしつつ移植。ちょっと特殊ですが、「navigateToURL」メソッドもそれ自体をimportするようにします。MXMLから「showInBrowser」メソッドを参照するように修正して、実行しておきましょう。エラーなく動いたら、移植したメソッドをMXMLから削除します。
それぞれ、「Method」区画に追加します。前者のみ可視性をpublicにします。
ここからは、タグで指定している機能のActionScriptへの移植です。AIR/Flexでは、MXMLで実装できていることはActionScriptでも実装できます。それぞれに一長一短ありますが、今回の「DateFormatter」クラスはシンプルなので、以下のように移植していきましょう。
コードサンプルは以下のようになります。
//-------------------------------------- |
エラーがなくなったら、実行しておきましょう。エラーなく動いたら、移植したタグをMXMLから削除します。
画面とロジックの分離作業はここまでにしておきましょう。
AIRには、SQLite(えすきゅーらいと)というデータベース(以下、DB)が内蔵されており、複雑なデータをSQLによってDBに保存したり、検索を行うことができます。SQLiteは1つのファイルで管理され、動作も高速な軽量DBです。
編集部注:SQLiteについて詳しく知りたい読者は、「AIRとSQLiteで学ぶ ローカルDB操作の基本」をご覧ください。
今回はRSSの名前とURLを持つRSSInfoオブジェクト(RSSReader画面左のリスト)の情報をローカルDBに新規登録、検索、削除する機能を追加していきます。実装の流れとしては以下のようになります(下記リストはインデックスになっています)。
この流れの途中で、RSS情報を新規作成するポップアップ画面も実装していきます。AIRウィジェット内のMXML、ロジッククラスとDBの関係を図で見ておきましょう。
DBには、ロジッククラスからアクセスします。MXMLからもアクセスできますが、ロジッククラスが仲介役を担当します。DBのファイル名は「rss.db」、RSS情報テーブルの名前は「RSS_INFO」となります。DBサーバのようなものは不要となります。
次ページからは、DB操作について1つ1つ解説していきます。
Copyright © ITmedia, Inc. All Rights Reserved.