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データの構造は作り手が決めることになるので、ドキュメントでどんなネームスペースがどこに定義されているかは確認しなければならない。
それなら、明確に指定した方がわかりやすいかなあという感じ。
サムネイルのサイズと、並べるときの位置を調整する必要がありそう。
あと、床への映り込みがまだない。