dev.convexstyle.net

for each in

del.icio.us hatena bookmark

数ヶ月前に個人的に一発奮起して Canon 30D を購入したのですが、それ以来写真の面白さにのめり込んでしまいました。Flickr を写真サイトのメインとして使っているんですが、今までのベスト写真アーカイブを表示する photoViewer を自前で作成しようと思い、その前に Flickr のベストフォトを取得する flickr.interestingness.getList API をベースに基本ロジックを作成しています。

ActionScript 3.0 から for each in が追加されて XML の解析が凄い簡単かつ明瞭になりました。従来は XML の処理は firstChild や childNodes など毎回冗長的に記述していかなければならなかったですが、E4X と for each in の連携によって XMLList オブジェクトを解析するのは PHP でいう foreach 的な使い勝手で今更ながら感動です。


下記のソースの様に、Flickr API の REST の結果を for each in でかなり簡単に解説出来ます。

▽ ActionScript サンプル(xml は flickr.interestingness.getList API の Rest 結果)

var sampleXml:XML = <photos page="2" pages="89" perpage="10" total="881">
	<photo id="2636" owner="47058503995@N01" 
		secret="a123456" server="2" title="test_04"
		ispublic="1" isfriend="0" isfamily="0" />
	<photo id="2635" owner="47058503995@N01"
		secret="b123456" server="2" title="test_03"
		ispublic="0" isfriend="1" isfamily="1" />
	<photo id="2633" owner="47058503995@N01"
		secret="c123456" server="2" title="test_01"
		ispublic="1" isfriend="0" isfamily="0" />
	<photo id="2610" owner="12037949754@N01"
		secret="d123456" server="2" title="00_tall"
		ispublic="1" isfriend="0" isfamily="0" />
</photos>;

var xmlList:XMLList = sampleXml.photo;
for each(var obj:Object in xmlList) {
trace("id: " + obj.@id);
trace("owner: " + obj.@owner);
trace("secret: " + obj.@secret);
trace("server: " + obj.@server);
trace("title: " + obj.@title);
trace("ispublic: " + obj.@ispublic);
trace("isfriend: " + obj.@isfriend);
trace("isfamily: " + obj.@isfamily);
trace("============================");
}


このソース自体はかなり基本的な形ですが、処理のコンパクト化はこのサンプルでも明確です。後は、XML の解析部分をモデルクラスにして、自前の viewer 用に少しカスタマイズすれば汎用性がありますね。

p.s.
group 94 のクリエイター Thomas Spiessens の写真サイトもいい!

この記事関連する書物 from Amazon.co.jp

トラックバック

このエントリーのトラックバックURL:
http://www.convexstyle.net/mt/mt-tb.cgi/48

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)