Vは、とりあえず以下のような感じ。
ソースは以下のような感じ。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="0xFFFFFF" xmlns:v="customcomponent.*" applicationComplete="init()" borderColor="#FFFFFF"> <mx:Script> <![CDATA[ import jp.co.example.amazon.*; import jp.co.example.core.data.*; import jp.co.example.core.event.*; import jp.co.example.core.load.*; private var urlmanager:URLManager=new URLManager(); private var xmlloader:XMLLoader=new XMLLoader(); private var xmldatamanager:XMLDataManager=new XMLDataManager(); private function init():void{ urlmanager.init(); loadXML(); } private function loadXML():void{ var urlstr:String=urlmanager.makeURLStr('ItemSearch',['Flash','Books','Images']); xmlloader.addEventListener(XMLLoader.LOAD_XML_COMPLETE,onLoadXML); var xml:XML=<xml url=""/>; xml.@url=urlstr; xmlloader.loadXML(xml); } private function onLoadXML(ce:CustomEvent):void{ xmldatamanager.datasource=XML(ce._target.data); setImages(); } private function setImages():void{ namespace amecs = "http://webservices.amazon.com/AWSECommerceService/2008-08-19"; use namespace amecs; hboximages.init(xmldatamanager.datasource.Items.Item.MediumImage); } ]]> </mx:Script> <v:HBoxImages id="hboximages" borderColor="#FFFFFF" backgroundColor="#FFFFFF"/> </mx:Application>
注意点は、E4XでXMLデータを扱う部分で、XMLにネームスペースが定義されているのでuse namespaceでネームスペースを指定してから操作を始めているところ。
以前は、QName()とnamespace()を使っていたが、今回からはuse namespaceにすることにした。
QName(),namespace()を使うと、汎用性がもてるのだが、結局のところXMLデータの構造は作り手が決めることになるので、ドキュメントでどんなネームスペースがどこに定義されているかは確認しなければならない。
それなら、明確に指定した方がわかりやすいかなあという感じ。
サムネイルのサイズと、並べるときの位置を調整する必要がありそう。
あと、床への映り込みがまだない。