AIRでrssリーダー

連載インデックス「作って学ぶAIRウィジェットの基礎→応用」 - @ITを参考に作ってみた。

アドビ・システムズ社が提供する、AIRのランタイム上で動作するデスクトップアプリケーション。

  • AIRFlexは簡単に切り替えられる。

mxmlのルートタグ(htmlで言うタグ)を切り替えるだけ。
AIRの場合

<mx: WindowedApplication>タグ

Flexの場合

<mx:Application>タグ

m(model):ActionScriptでBeanを実装。また、SQLiteが簡単に使える(SQLiteスキーマやデータをファイルに保存する。)。
v(view):mxmlで定義。cssファイルが使える。
c(control):ActionScriptでロジックを記述する。[アプリケーション名]Logic.asというファイル名で作成する。

  • swcファイルはライブラリファイル。

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();
}