AIR&Flexアプリを触り中。ちなみにFlashとかActionScriptの経験は無し。
お金かけずに揃う開発環境ということでFlashDevelopを使ってみることに。Flex3SDKとFlashDevelopをダウンロードし、初期設定は無料でFlashの制作環境が整えられる! FlashDevelopとFlex SDK 3のインストール方法(ビデオ付き) | ClockMaker Blogを参考にして設定する。
設定が終わったら、FlashDevelopで"AIR Flex3 Projector"でプロジェクトを作成。mxmlの中にコードを書くのは好きではないので、mx:Script指定で外部にASファイルを作る。
最初はButtonとLabelを置いてボタンを押したらラベルに文字が出るようなサンプルを作ってみる。
ActionScriptはJavaScriptに似てるのかなぁ...。変数や関数の型を名前の後に書くってのがちょっと変わってる。それ以外はあまり癖は無さそう。
UIの見た目も、CSSとかテーマを適用すれば変えられるようなので追々やってみるつもり。
FlashDevelopの補完は確かに便利。自作のクラスの補完まではやってくれないっぽいし、一部補完が働いてくれないところもあるけど、おおむね良い感じ。
とりあえず作りたいのは、あるサイトをスクレイピングしてデータをリスト表示し、ある変更があればGrowlでアラートを出すって感じのやつなので、
- リスト表示
- HTTP通信
- スクレイピング
- データストア(SQLite?)
- Growl
ぐらいがあれば何とか自分用としてなら中身がグダグダでも作れるかな。
リスト表示
まずはリスト表示。DataGridというのを使うらしいので試してみる。データソース(dataProvidor)にはArrayCollection型のObjectの配列を作っておけばリストに表示されるようだ。Object型が連想配列だってのはしばらく気づかずに混乱してた。JavaのObject型のイメージがあったからかな...。
ちょっとBindable指定がよく分かってないけど、Bindable指定したArrayCollectionかArrayじゃないとDataGridのdataProvidorには指定できないっぽいというのは分かった。
HTTP通信
HTTPServiceというのを使う。
var http:HTTPService = new HTTPService(); http.url = "https://swingingblue.sakura.ne.jp/blog/"; http.addEventListener(ResultEvent.RESULT, onResult); http.resultFormat = "text"; http.send();
結果を受け取るリスナーと、受け取る形式(今回は生HTMLなので"text")を指定してsend()すれば結果が得られる。
もう一つ、send()の時にAsyncTokenを受け取り、addResponder()でリスナーを登録するやり方もあるようだけど、使い分け方とか違いがよく分からず。
スクレイピング
PHPやRubyにはhtmlSQLやらscRUBYt!などいろいろあるようだけど、AcrionScript向けには無さそうな感じ。
対象のサイトが比較的きれいなタグを吐いてるのでもしかするとXHTMLでアクセスできるかもしれないけど...、たぶん正規表現で抜くしかないのかな。
まずはXHTMLで解析を試してみてダメなら正規表現で。
コメント