almost all things about it
Posts tagged RIA
ただTitaniumチュートリアルをやってみただけだがエラーが出たので、ここに書いた
Dec 12
開発環境
Appcelerator SDKとTitanium SDKをインストール
Appcelerator Product Downloads
Appcelerator Titanium SDK Downloads
チュートリアってみる。
Starting your first Titanium project
上記を参考に進めてみた。
プロジェクト生成
Terminalから
$ app create:project . myproject titanium
下記のように出力されればプロジェクト生成成功。
Using service titanium Connecting to update server ... Fetching release info from distribution server... Your project was created in /Users/yourname/myproject Appcelerator titanium project created ... Code strong!
ちなみにSDKのインストールに失敗したのか、最初はうまくいかなかった。
再インストールしたらうまくいった。
プロジェクト(アプリケーション)のパッケージング
$ cd myproject $ app package:project osx #Windows向けの場合はwin32 Create directory [/Users/yoshida/Work/temp/myproject/stage]? (Y)es,(N)o,(A)ll [Y] Y Connecting to update server ... Fetching release info from distribution server... (1/1) titanium:osx: 0% | (1/1) titanium:osx: 1% | ... (1/1) titanium:osx: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooo| 5.4MB 302.5KB/s ETA: 00:00:00 Installed titanium:osx 0.1 Packaging Titanium for target os: osx Validating tiapp.xml ... Looks good ... Let's packager up! Your Titanium application is located in /Users/yoshida/Work/temp/myproject/stage
これで/Users/yoshida/Work/temp/myproject/stageにmyproject.appとしてパッケージングされる。
myproject.appを起動した。
なんかエラーが出るが、

無視してクリックするとウィンドウが表示された。

Javascript APIを使ったサンプルがコード付きで試せるので、いろいろと見てみよう。
但し、上記エラーのせいか、ボタンクリック系のサンプルが動かない、、、
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アプリケーションを実行してみてください。タイムラインが表示されます。