Yahoo!PipesでAmazon:本>Flashのベストセラー
♥0 |
Line 71 |
Modified 2010-10-19 15:38:37 |
MIT License
archived:2017-03-20 15:19:21
ActionScript3 source code
/**
* Copyright yun ( http://wonderfl.net/user/yun )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/z2vd
*/
/*
yahoo!Pipes
http://pipes.yahoo.com/pipes/pipe.info?_id=f4f6c98189a88373b9bfd4fe6128c018
RSS
http://www.amazon,co.jp/gp/bestsellers/books/713428/ref=pd_zg_hrsr_b_1_5_last
*/
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.filters.DropShadowFilter;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF( backgroundColor="0xCCCCCC" )]
public class Main extends Sprite
{
public function Main():void
{
// ドキュメントルートのcrossdomain.xml(http://pipes.yahooapis.com/crossdomain.xml)で
// 許可を与えているので、特に指定しなくても自動的に許可を取ってくる。
var myURLLoader:URLLoader = new URLLoader();
myURLLoader.addEventListener( Event.COMPLETE, onCompleteXML );
// Yahoo!Pipesの汎用feedProxy
var xmlURL:String = "http://pipes.yahooapis.com/pipes/pipe.run?_id=f4f6c98189a88373b9bfd4fe6128c018&_render=rss&url=";
// encodeURIComponent でエスケープして、feedProxyにくっつける。
xmlURL += encodeURIComponent( "http://www.amazon.co.jp/rss/bestsellers/books/713428/ref=pd_ts_rss_link" );
myURLLoader.load( new URLRequest( xmlURL ) );
}
private function onCompleteXML( e:Event ):void
{
var myXML:XML = new XML( e.currentTarget.data );
var htmldata:String = "<a href='http://www.amazon.co.jp/gp/bestsellers/books/713428/ref=pd_zg_hrsr_b_1_5_last' target='_blank'>";
htmldata += "Amazon:本 > Flashのベストセラー";
htmldata += "</a>";
var title:TextField = new TextField();
title.htmlText = htmldata;
title.width = 465;
title.height = 20;
addChild( title );
var itemLength:int = Math.min( 9, myXML.channel.item.length() );
for ( var i:int = 0; i < itemLength; i++ )
{
// 画像のURLを抜き出している。
var imgURL:String = myXML.channel.item[i].description.split( " src=\"" )[1].split( "\"" )[0];
var myLoader:Loader = new Loader();
myLoader.load( new URLRequest( imgURL ) );
// 画像が読み込めなかった場合にエラーが出ないようにする。
myLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, IO_ERROR );
// キャプチャ完了したものはjpgというファイル名になっているので、その場合は縮小。
// 完了していない場合は、小さなエラー画像が出るので、その場合は拡大。
if ( imgURL.indexOf( "jpg" ) + 1 ) {
myLoader.scaleX = myLoader.scaleY = 0.85;
} else {
myLoader.scaleX = myLoader.scaleY = 465 * 0.85 * 0.01;
}
myLoader.x = 18 + ( i % 3 ) * 150;
myLoader.y = 20 + Math.floor( i / 3 ) * 150;
// ドロップシャドウをかける。
myLoader.filters = [new DropShadowFilter()];
// link先をnameに入れる。
myLoader.name = myXML.channel.item[i].link;
var tf:TextField = new TextField();
tf.text = myXML.channel.item[i].title;
tf.width = 145;
tf.height = 20;
tf.x = 10 + ( i % 3 ) * 150;
tf.y = 150 + Math.floor( i / 3 ) * 150;
addChildAt( myLoader, 0 );
addChildAt( tf, 0 );
}
addEventListener( MouseEvent.CLICK, CLICK );
}
private function IO_ERROR( e:IOErrorEvent ):void { };
private function CLICK( e:MouseEvent ):void {
// クリックされたら、ターゲットの名前(link先)を取得して、httpがついていたら遷移。
var linkURL:String = e.target.name;
if ( linkURL.indexOf( "http" ) + 1 ) {
navigateToURL( new URLRequest( linkURL ) );
}
}
}
}