Flex2ã§CoverFlowã¯ãã¼ã³ãä½ã (ï¼) ï½Amazonã¨é£æºãã
Tuesday, 11. November 2008, 02:54:39
第ä¹åã®ä»åã¯æçµåã¨ãªãã¾ããAmazonWebserviceã¨é£æºãã¦ã¿ã¤ãã«ãèè åã表示ããææ³ãæ´çãã¾ãã
â ä»åãµã³ãã«ã®å®æã¤ã¡ã¼ã¸
ç»åãã¯ãªãã¯ããªãããå·¦å³ã«åãããããå¢ãè¯ãå·¦å³ã«åããããããã¨ãCoverFlowã®ããã«åä½ãã¾ãã
ååã¯ç»åãéãåããããã¨ã§ãåçé¨åã®è¦æ ãã¯ãã»ã¼ãCoverFlowã«è¿ããªãã¾ãããä»åã¯AmazonWebserviceã¨é£æºãã¦ãasinIdã®ã¿ã¤ãã«ãèè ã表示ãã¾ãã
â ãã¡ã¤ã«ã®æºå
ããã¸ã§ã¯ããã¡ã¤ã«ããã¦ã³ãã¼ããã¦ãä»»æã®ãã£ã¬ã¯ããªã§è§£åãã¾ãã
- reflector.as3proj
- reflector.mxml
- ImageReflector.as
- TransformUtil.as
- CoverFlowLayout.as
- RepeaterHBox.as
- AmazonWebservice.as
reflector.as3projãããã«ã¯ãªãã¯ããã¨ãFlashDevelopãå®è¡ããã¾ãã
â AmazonWebãµã¼ãã¹ã«ç»é²ãã
AmazonWebãµã¼ãã¹ã使ãã¨ãä»åãããã¨ãã¦ãããããªãasinIdã®ååæ å ±ãåå¾ãããã¨ãã§ãã¾ããç²¾ããã¯ããã¡ãã®ããã¥ã¡ã³ããæ¥æ¬èªã§ããã®ã§ãä¸èªããã¨è¯ãã§ãããã
http://www.amazon.co.jp/gp/feature.html?docId=451209
ã¾ã ã¢ã«ã¦ã³ãããã£ã¦ããªãæ¹ã¯ã
http://aws.amazon.com/
ããç»é²ãã¾ãããã
ç»é²ããã¨ãç»é²ID(Subscription ID)ãåå¾ã§ãã¾ãã
ãã®IDãAmazonWebservice.asã®AWSAccessKeyId夿°ã«å ¥ãã¦ãã ããã
public class AmazonWebservice {
private const AWSAccessKeyId:String = "***** ããªãã®ç»é²ID ******";
private const AmazonRegionCode:String = "09"; // æ¥æ¬ã¯09
â Amazonããååæ å ±ãåå¾ãã
Amazonã¨ã®ãã¼ã¿ã®ããã¨ãã¯ãFlashããGETãã©ã¡ã¼ã¿ã§å¿ è¦ãªæ å ±ãéãè¾¼ã¿ãæ»ãã¨ãã¦XMLãåãåãã·ã³ãã«ãªRESTã¤ã³ã¿ã¼ãã§ã¼ã¹ã§ããAmazonã¸ãªã¯ã¨ã¹ãããURLãgetAmazonRestUrl颿°ã§ä½ã£ã¦ãã¾ãã
private function getAmazonRestUrl(asin:String):String
{
var url:String = "http://webservices.amazon.co.jp/onca/xml?"
+ "Service=AWSECommerceService&"
+ "AWSAccessKeyId="+AWSAccessKeyId+"&"
+ "Operation=ItemLookup&"
+ "IdType=ASIN&ItemId=" + asin + "&"
+ "ResponseGroup=Request,ItemIds,ItemAttributes,Tracks,EditorialReview";
return url;
}
ãã©ã¡ã¼ã¿ãã¨ã®è©³ç´°ãªè§£èª¬ã¯ãä¸è¨ããã¥ã¡ã³ããåç
§ãã¦æ¬²ããã®ã§ãããããã§ã¯
IdTypeãASINã¨ãã¦ãItemIdã§åå¾ãããasinIdãæå®ãã¾ããã¬ã¹ãã³ã¹ã¯ãã¹ã¦åå¾ãããã¨ãã§ãã¾ãããããã§ã¯ResponseGroupã«æ¸ããå 容ã«çµãè¾¼ãã§ åå¾ãã¾ãã
â Amazonããã®æ»ãå¤ãåå¾ãã
URLãå¼ã³åºãã¦ãçµæãåå¾ããã®ã¯ãAmazonããCoverFlowç¨ã®åçãåå¾ããã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨åãã§ãã_amazonLoader = new URLLoader(); _amazonLoader.addEventListener(Event.COMPLETE, completeAmazonRequest); _amazonLoader.load(new URLRequest(getAmazonRestUrl(asin)));
ã®ããã«ãã¦ãURLããåå¾ã§ãããcompleteAmazonRequest颿°ãå¼ã°ãã¾ãã
åä¿¡é¨åã®ã³ã¼ãã¯
private function completeAmazonRequest(event:Event):void
{
namespace ns = 'http://webservices.amazon.com/AWSECommerceService/2005-10-05';
use namespace ns;
_xml = new XML(_amazonLoader.data);
}
ã¨ããã£ãããã ãã§ããAmazon Webãµã¼ãã¹ã§æå®ããããã¼ãã³ã°ã¹ãã¼ã¹ãæå®ãã¦ãXMLãªãã¸ã§ã¯ããä½ãã¾ããæ»ã£ã¦ãããã¼ã¿ã¯XMLå½¢å¼ãªã®ã§ãããã§ActionScriptããåç §ããããå½¢å¼ã¨ãªãã¾ãã
â XMLå ã®ãã¼ã¿ãè§£æãã
åå¾ããXMLãè§£æããã®ã¯ã¨ã¦ãç°¡åã§ãããã¨ãã°Web2.0ãã®ãã¼ãºãã¤ãã«ã®asinIdãæå®ãã¦æ»ã£ã¦ããXMLã¯ä»¥ä¸ã®ã¨ããã§ãã
<?xml version="1.0" ?>
<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)">
</Header>
</HTTPHeaders>
<RequestId>53c87848-02e3-4317-8136-b49b1d2a0108</RequestId>
<Arguments>
<Argument Name="Operation" Value="ItemLookup"></Argument>
<Argument Name="Service" Value="AWSECommerceService"></Argument>
<Argument Name="ItemId" Value="4839923221"></Argument>
<Argument Name="IdType" Value="ASIN"></Argument>
<Argument Name="AWSAccessKeyId" Value="********************"></Argument>
<Argument Name="ResponseGroup" Value="Request,ItemIds,ItemAttributes,Tracks,EditorialReview"></Argument>
</Arguments>
<RequestProcessingTime>0.1317150000000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemLookupRequest>
<Condition>New</Condition>
<DeliveryMethod>Ship</DeliveryMethod>
<IdType>ASIN</IdType>
<MerchantId>Amazon</MerchantId>
<OfferPage>1</OfferPage>
<ItemId>4839923221</ItemId>
<ResponseGroup>Request</ResponseGroup>
<ResponseGroup>ItemIds</ResponseGroup>
<ResponseGroup>ItemAttributes</ResponseGroup>
<ResponseGroup>Tracks</ResponseGroup>
<ResponseGroup>EditorialReview</ResponseGroup>
<ReviewPage>1</ReviewPage>
</ItemLookupRequest>
</Request>
<Item>
<ASIN>4839923221</ASIN>
<DetailPageURL>http://www.amazon.co.jp/Web2-0%E3%83%93%E3%82%AE%E3%83%8A%E3%83%BC%E3%82%BA%E3%83%90%E3%82%A4%E3%83%96%E3%83%AB-%E4%BC%8A%E8%97%A4-%E6%B5%A9%E4%B8%80/dp/4839923221%3FSubscriptionId%3D*******************%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4839923221</DetailPageURL>
<ItemAttributes>
<Author>ä¼è¤ 浩ä¸</Author>
<Author>大津 ç</Author>
<Author>å²¸ç° å¥ä¸é</Author>
<Author>ã¾ãã ã²ãã</Author>
<Author>å®äº å</Author>
<Binding>åè¡æ¬</Binding>
<EAN>9784839923228</EAN>
<ISBN>4839923221</ISBN>
<Label>æ¯æ¥ã³ãã¥ãã±ã¼ã·ã§ã³ãº</Label>
<ListPrice>
<Amount>3990</Amount>
<CurrencyCode>JPY</CurrencyCode>
<FormattedPrice>ï¿¥ 3,990</FormattedPrice>
</ListPrice>
<Manufacturer>æ¯æ¥ã³ãã¥ãã±ã¼ã·ã§ã³ãº</Manufacturer>
<NumberOfPages>927</NumberOfPages>
<PackageDimensions>
<Height Units="hundredths-inches">205</Height>
<Length Units="hundredths-inches">921</Length>
<Weight Units="hundredths-pounds">340</Weight>
<Width Units="hundredths-inches">724</Width>
</PackageDimensions>
<ProductGroup>Book</ProductGroup>
<PublicationDate>2007-04</PublicationDate>
<Publisher>æ¯æ¥ã³ãã¥ãã±ã¼ã·ã§ã³ãº</Publisher>
<Studio>æ¯æ¥ã³ãã¥ãã±ã¼ã·ã§ã³ãº</Studio>
<Title>Web2.0ãã®ãã¼ãºãã¤ãã«</Title>
</ItemAttributes>
</Item>
</Items>
</ItemLookupResponse>
ã§ãæ¬ã®ã¿ã¤ãã«ã¯ãItemLookupResponse  +-- Item       +-- ItemAttributes            +-- Titleã¨ããé層ã«ããã¾ãããããåå¾ããã«ã¯XMLãªãã¸ã§ã¯ããã
_xml.Items.Item.ItemAttributes.child('Title');
ã¨æ¸ãã ãã§åå¾ã§ãã¾ãã_xmlãªãã¸ã§ã¯ãããXMLã®é層ããã©ãããã«ã¿ã°åã.(ããã)ã§åºåã£ã¦ããã ãã§ããç°¡åã§ãããâ ImageReflectorãã使ã
AmazonWebserviceã®å®è£ ãã§ããããImageReflectorããå¼ã³åºãã¾ããinitLoader()ã®æ«å°¾ã«ã
_amazonInfo.callAmazon(asinId);ã追å ããasinIdã®ååæ å ±ãåå¾ãã¾ããæ å ±ãåå¾ã§ããã夿ãã¦ãæç»çµäºã¨ãã夿ã«ããããã«ãisCompleted颿°ã
public function isCompleted():Boolean {
if (!_invalidatedReflection) return false
if (_amazonInfo == null) return false
if (!_amazonInfo.isLoaded()) return false;
return true;
}
ã®ããã«ä¿®æ£ãã¦ãAmazon Webãµã¼ãã¹ããã®ãã¼ããçµäºãã¦ãããã¨ã夿ææã¨ãã¾ãã
â ç»é¢ã«æç»ãã
æå¾ã«ç»é¢ã«æç»é åã使ãã¾ããmxmlã«ã©ãã«ã¨ãã¦ãã¿ã¤ãã«ã¨èè åã表示ããæ¬ãä½ãã¾ãã
<Label id="title" text="ã¿ã¤ãã«" color="0xFFFFFF" paddingTop="-180" paddingLeft="20" fontWeight="bold" fontSize="11" /> <Label id="subtitle" text="èè " color="0xFFFFFF" paddingLeft="20" fontWeight="bold" fontSize="11" />ãã®è¡¨ç¤ºã¯ãç¹å®ã®æ¬ã鏿ããã¨ãã«å¤æ´ãããã®ã§ã鏿ã夿´ãããã¨ãã®ã¤ãã³ãselectedIndex颿°ã§ãå¤ãä»£å ¥ãã¾ãã
// 鏿ãããé ç®ã®ã¿ã¤ãã«ã表示 title.text = imageReflector[value].titleText; subtitle.text = imageReflector[value].authorText;ãç´æã§ãããImageReflectorå´ã§ã¯ãtitleTextã¨authorTextã¯Bindableã«ãã¦ããå¿ è¦ãããã¾ãã
â ã¯ãã¹ãã¡ã¤ã³ã®æ³¨æäºé
amazonã®ç»åãµã¼ãã®crossdomain.xmlã¯ç»åãµã¼ãå ããã ãããåç §ã§ããªãã®ã§ãããã§ä½æããSWFãã¡ã¤ã«ããµã¼ãã«ã¢ãããã¼ããã¦ããã¾ã表示ã§ãã¾ãããæ¬è¨äºä¸ã®å®æã¤ã¡ã¼ã¸ã¯ãPHPãµã¤ãã§ãããã·ãã¦ãã¾ãã
ã¾ãPHPã®ã³ã¼ãã¯éå»è¨äºãåèã«ãã¦ãã ããã








