Flash
昨日買ってきたWEB+DBの連載にActionScript3.0の記事があって、そういえばうっかりFlexBuilderを大金出して買ってしまったのに放置状態だったので、Eclipse立ち上げて少し遊んでみました。
結果・・・楽しすぎて5時間ぶっ通しでやってしまいました。ちゃんとオブジェクト指向になってるし、XMLで画面作ってイベントリスナーでアクション登録とか、まるでjavaです。すてき。
Flex2,ActionScript3.0が優れている9の理由とAjaxとの差
フロント系のHOTな技術はAjaxかFlashだけど、↑の理由でAjaxは好きになれません。特にブラウザ依存が頭が痛い。同じように仕様がコロコロ変わるPHPも嫌いです。こいつらの保守にかかる手間は異常。将来Flashがメインになるかと言われるとどうなるかわからないけど・・・
Flickrビューワー作り
昨日今日で、いきなり本格的なのは無理なので、blogの横に貼り付けるウィジェットでも作ってみようと考えました。画像のサムネイルを表示する、よくあるやつです。
現時点で出来たのはここまで。
http://www.sumomo.jp/study/flex1/Flickr.html
色とか大きさとか微妙だけど、何となくウィジェットぽいものが出来ました。後はクリックして画像URLに飛ばせれば良いかな。
仕様はFlickrの最新画像が出力されるRSSを読んで、画像を読み込んで表示してるだけです。APIとか使ってません。初めてなのとFlexBuilderのGUIでデザインしたので、何か汚いけどソースも置いときます。
http://www.sumomo.jp/study/flex1/Flickr.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="loadFlickrFeed()" horizontalAlign="Center" verticalAlign="middle" width="320" height="500"> <mx:Script source="FlickrViewer.as"/> <mx:Panel layout="absolute" backgroundColor="#998899" left="10" right="20" bottom="10" top="10" color="#DDEFF3" cornerRadius="11" borderStyle="none"> <mx:TileList columnCount="4" left="15" right="15" top="10" bottom="30" dataProvider="{photos}" paddingBottom="5" alternatingItemColors="[#F1E7E7, #E4C8C8]" cornerRadius="0"> <mx:itemRenderer> <mx:Component> <mx:VBox horizontalAlign="center" height ="70" width="70"> <mx:Image id="photo" horizontalAlign="center" height ="50" width="50" source="{data.photo}"/> </mx:VBox> </mx:Component> </mx:itemRenderer> </mx:TileList> <mx:Button click="loadFlickrFeed()" y="418" label="再読込" x="10" fillAlphas="[1.0, 0.11, 1.0, 0.11]" fillColors="[#0E9684, #0E9684, #0E9684, #0E9684]" borderColor="#000000" color="#000000" /> </mx:Panel> </mx:Application>
http://www.sumomo.jp/study/flex1/FlickrViewer.as
import flash.events.Event; import flash.events.MouseEvent; import flash.events.HTTPStatusEvent; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import mx.collections.ArrayCollection; private const FEED_URL:String = 'http://api.flickr.com/services/feeds/photos_public.gne?format=rss_200'; private var urlLoader:URLLoader; [Bindable] public var photos:ArrayCollection; private function loadFlickrFeed():void{ photos = new ArrayCollection(); urlLoader = new URLLoader(); urlLoader.load(new URLRequest(FEED_URL)); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; urlLoader.addEventListener(Event.COMPLETE, loaded); } private function loaded(e:Event):void{ var feed:XML = XML(urlLoader.data); namespace mediaNS = 'http://search.yahoo.com/mrss/'; use namespace mediaNS; for each(var item:XML in feed.channel.item){ var thumbnailUrl:String = item.thumbnail.@url; var contentUrl:String = item.content.@url; var obj:Object = {photo:thumbnailUrl,url:contentUrl}; photos.addItem(obj); } }
後書き
- TileListの使い方に苦労しました。
- エフェクトとかそれなりに揃ってるけれど、タイムラインで作る物にはかないません。
- というわけで、Flash CS3が欲しい