almost all things about it
Posts tagged Air
Adobe Airでtwitterタイムラインを取得してみよう。
Jul 1
前提条件
Adobe Flex Builder3がインストール済みであること。(Eclipseプラグインでも可)
※ダウンロード、インストール方法については、下記Adobeサイトを参照してください。
Flex Builder(または、Eclipse)上でのプロジェクト作成
1.File > New > Flex Project(見つからない場合は、Otherより探してください。)を選択。
2.プロジェクト名を’twitter’(任意)とし、アプリケーションの種類を’デスクトップアプリケーション(Adobe Air…)’としてFinishを選択。これで下記構成プロジェクトが作成されます。
- bin-debug
- libs
- src
- twitter.mxml
- twitter-app.xml
ひとまず、Airアプリケーションを実行してみましょう。
- プロジェクト’twitter’を右クリック > Run As > Adobe Air アプリケーションを選択。
- 別画面でAirアプリケーションが起動するはずです。もちろんまだ何もコーディングしていませんので、何も無いウィンドウが表示されるだけです。
twitterのタイムラインを表示するための画面コンポーネントの作成
twitterのタイムラインを表示するためのコンポーネントとして、ここではmx:DataGridコンポーネントを使用します。
- twitter.mxmlをダブルクリックし、エディターに表示させ、デザインタブをクリック。
- コンポーネントビューのコントロール/DataGridコンポーネントをデザインエディタにドラッグ。
- Airアプリケーションを実行して、確認してください。何もなかったウィンドウにDataGridが表示されてます。
twitter apiを使用してタイムラインを取得する。
1.まずは、twitterのAPIと通信を行うための、mx:HTTPServiceを作成します。
twitter.mxmlをダブルクリックし、エディターに表示させ、ソースタブをクリック。mx:WindowedApplicationタグ内に、下記を追加します。
1 2 3 | <mx:HTTPService id="twitter_timeline" url="http://twitter.com/statuses/public_timeline.xml"/> |
2.アプリケーション開始時に、このHTTPServiceで通信するよう、mx:WindowedApplicationのcreationCompleteイベント属性に、’twitter_timeline.send()’と記述します。
3.ここまでで、下記のようになるかと思います。
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="twitter_timeline.send()"> <mx:HTTPService id="twitter_timeline" url="http://twitter.com/statuses/public_timeline.xml"/> ...省略 </mx:WindowedApplication> |
4.次に、取得したタイムラインを最初に作成したDataGridに表示させます。
twitterのタイムラインAPIからは、XMLが取得できます。どういうXMLが取得できるかは、http://twitter.com/statuses/public_timeline.xmlにブラウザでアクセスして確認してみてください。
取得したXMLをDataGridに表示させるには、dataProviderを使用します。ここにはXMLオブジェクト等を指定することができます。具体的にはdataProvider=”{twitter_timeline.lastResult.statuses.status}”とします。これは、HTTPServiceであるtwitter_timeline(ID)のlastResultファンクション(取得した内容(オブジェクト、ここではXMLオブジェクト)を返す)のstatusesタグの、statusタグを指定していることになります。
そして、DataGridのカラムであるmx:DataGridColumnのdataField属性に、”text”と記述します。これはstatusタグのtextタグの内容をセットしています。後はこれがstatusタグの回数分、自動的に出力されます。Airアプリケーションを実行して確認してみてください。
1 2 3 4 5 | <mx:DataGrid x="0" y="0" dataProvider="{twitter_timeline.lastResult.statuses.status}" width="100%" height="100%"> <mx:columns> <mx:DataGridColumn headerText="text" dataField="text"/> </mx:columns> </mx:DataGrid> |
5.次に、screen_nameを取得します。
screen_nameはstatusタグのuserタグの中にあります。通常、DataGridタグ内では、{data}として、dataProviderのデータを取得できます。但し、dataField属性には、使用できません。そこでmx:itemRendererを使用します。これでDaraGridColumn内のレンダリングコンポーネントを差し替えることができます。下記のようにして、mx:labelコンポーネントに差し替えてtext属性に{data.user.screen_name}をセットしています。
1 2 3 4 5 6 7 | <mx:DataGridColumn headerText="name"> <mx:itemRenderer> <mx:Component> <mx:Label text="{data.user.screen_name}"/> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> |
6.次に、ユーザの画像を表示してみます。
DataGridColumnに画像を表示するには、itemRendererにmx.controls.Imageを指定します。これにより、このmx.controls.Imageのsource属性にURLをセットすることで画像として表示されます。ここまで全て合わせると下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="twitter_timeline.send()"> <mx:HTTPService id="twitter_timeline" url="http://twitter.com/statuses/public_timeline.xml"/> <mx:DataGrid x="0" y="0" dataProvider="{twitter_timeline.lastResult.statuses.status}" width="100%" height="100%"> <mx:columns> <mx:DataGridColumn headerText=""> <mx:itemRenderer> <mx:Component> <mx:Image source="{data.user.profile_image_url}"/> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> <mx:DataGridColumn headerText="name"> <mx:itemRenderer> <mx:Component> <mx:Label text="{data.user.screen_name}"/> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> <mx:DataGridColumn headerText="text" dataField="text"/> </mx:columns> </mx:DataGrid> </mx:WindowedApplication> |
これでAirアプリケーションを実行してみてください。タイムラインが表示されます。