In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: Yahoo!PipesでAmazon:本 > Flashのベストセラー

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
*
/**
 * Copyright ongaeshi ( http://wonderfl.net/user/ongaeshi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/8xpd
 */

// forked from umhr's Yahoo!PipesでAmazon:本 > Flashのベストセラー
/*
 * 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.Sprite;
	import flash.display.Bitmap;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.MouseEvent;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.filters.DropShadowFilter;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.net.navigateToURL;
	/**
	 * ...
	 * @author umhr
	 */
	[SWF(backgroundColor="0xF2A883")]
        
	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);
			//YahooPipesの汎用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/ref=pd_ts_rss_link");

			myURLLoader.load(new URLRequest(xmlURL));
		}
           
		private function onCompleteXML(e:Event):void {
                        // XMLの内容 
                        // trace(e.currentTarget.data);
			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.textColor = 0xA60500;
			title.htmlText = htmldata;
			title.width = 465;
			title.height = 20;
			addChild(title);
			
                        // 最大で9個まで
			var itemLength:int = Math.min(9, myXML.channel.item.length());

			for (var i:int = 0; i < itemLength; i++) {
				//画像のURLを抜き出している。
                                //trace("============");
                                //trace(myXML.channel.item[i].description.split(" src=\"")[1].split("\"")[0]);
				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(Event.COMPLETE, onLoadComplete);
				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.textColor = 0x5554A6;
				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 onLoadComplete(e:Event):void {
                    // ロードした画像をビットマップ化しようとしたらセキュリティエラー
                    //
                    // SecurityError: Error #2122: セキュリティサンドボックス侵害 : LoaderInfo.content:http://swf..3758 は http://ecx...jpg にアクセスできません。
                    // ポリシーファイルが必要ですが、このメディアがロードされたとき、checkPolicyFile フラグが設定されませんでした。
                    // 
	            // at flash.display::LoaderInfo/get content()
	            // at Main/onLoadComplete()
                    //

                    // trace("onLoadComplete");
                    // var bmp:Bitmap = e.target.content;
                }
			
		private function CLICK(e:MouseEvent):void {
			//クリックされたら、ターゲットの名前(link先)を取得して、httpがついていたら遷移
			var linkURL:String = e.target.name;
			if (linkURL.indexOf("http") + 1) {
				navigateToURL(new URLRequest(linkURL) );
			}
		}
	}
}