数ヶ月前に個人的に一発奮起して 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 の写真サイトもいい!











