AIRでrssリーダー
連載インデックス「作って学ぶAIRウィジェットの基礎→応用」 - @ITを参考に作ってみた。
- AIRとは
アドビ・システムズ社が提供する、AIRのランタイム上で動作するデスクトップアプリケーション。
mxmlのルートタグ(htmlで言うタグ)を切り替えるだけ。
AIRの場合
<mx: WindowedApplication>タグ
Flexの場合
<mx:Application>タグ
m(model):ActionScriptでBeanを実装。また、SQLiteが簡単に使える(SQLiteはスキーマやデータをファイルに保存する。)。
v(view):mxmlで定義。cssファイルが使える。
c(control):ActionScriptでロジックを記述する。[アプリケーション名]Logic.asというファイル名で作成する。
- swcファイルはライブラリファイル。
- [Bindable]メタデータタグについて
id:nitoyonさんのFlex の Bindable 入門 - てっく煮ブログ 跡地という記事が参考になります。
簡単に言うと、データが変わったときに自動でイベントが発生するようになるタグ。(イベントハンドラーを登録しておく必要が無い)
変わったデータは{}中括弧で値が取れる。
- pdfを生成する、AlivePDFというライブラリがある。
ActionScriptでゴリゴリ書かなきゃいけないみたいなので、帳票とかには向いてなさそう。やっぱり、複雑なpdf生成したいのならサーバ側(java等)で作った方がいいのかも(AIRはサーバとの連携もできる)。
以下はAlivePDFのpdf生成のサンプルコード
private var myPDF:PDF; public function generate ( pEvt:MouseEvent ):void { myPDF = new PDF( Orientation.PORTRAIT, Unit.MM, Size.A4 ); myPDF.setDisplayMode( Display.FULL_PAGE, Layout.SINGLE_PAGE ); //myPDF.setViewerPreferences( org.alivepdf.viewing.ToolBar.HIDE, org.alivepdf.viewing.MenuBar.HIDE, org.alivepdf.viewing.WindowUI.HIDE ); myPDF.addPage(); myPDF.lineStyle( new RGBColor ( 255, 200, 0), 1, 1, Blend.OVERLAY, null, Caps.NONE, Joint.BEVEL ); myPDF.drawRect( new Rectangle ( 10, 10, 50, 40) ); myPDF.beginFill( new RGBColor ( 0, 255, 100 ) ); myPDF.lineStyle( new RGBColor ( 255, 200, 0), 1, .2, Blend.DIFFERENCE, null, Caps.NONE, Joint.BEVEL ); myPDF.drawRect( new Rectangle ( 20, 35, 50, 40) ); myPDF.end(); myPDF.textStyle( new RGBColor (0,0,0), 1 ); myPDF.setFont( FontFamily.HELVETICA, Style.NORMAL, 18 ); myPDF.addText ("Hello World", 150, 50); myPDF.setFontSize(25); myPDF.addText ("Hello World", 120, 80); myPDF.addPage (); myPDF.lineStyle( new RGBColor ( 255, 200, 0), 1, .5, Blend.NORMAL, null, Caps.NONE, Joint.BEVEL ); myPDF.beginFill( new RGBColor ( 0, 255, 100 ) ); myPDF.drawRect( new Rectangle ( 10, 10, 10, 10) ); myPDF.addPage(); myPDF.addImage ( this, .5, null, null, true, ImageFormat.JPG ); myPDF.addPage(); myPDF.addImage ( this, 1, null, null, true, ImageFormat.JPG ); var f:FileStream = new FileStream(); var file:File = File.desktopDirectory.resolvePath("pdf/generate.pdf"); f.open( file, FileMode.WRITE); var bytes:ByteArray = myPDF.savePDF(Method.LOCAL); f.writeBytes(bytes); f.close(); }