/**
* Copyright qq49121294 ( http://wonderfl.net/user/qq49121294 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/y2DV
*/
// forked from hacker_m2z6e0cr's flash on 2011-7-18
//↓参考にしました
//http://termat.sakura.ne.jp/actionscript/yahoopipe%e3%81%a7flickr%e3%82%92%e6%a4%9c%e7%b4%a2/#extended
//http://wonderfl.net/c/iDkz/edit
package {
import flash.display.AVM1Movie;
import flash.text.*;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.display.Shape;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
import com.bit101.components.PushButton;
import flash.utils.escapeMultiByte;
import flash.ui.Mouse;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BevelFilter;
import flash.filters.ColorMatrixFilter;
import flash.filters.DropShadowFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.text.TextField;
import flash.utils.escapeMultiByte;
import flash.filters.GlowFilter;
[SWF(backgroundColor=0xffffff,width=500,height=400,frameRate=30)]
public class FlashTest extends Sprite {
private var biFlag:Boolean = false;
private var imgArray:Array = new Array();
private var s:Sprite = new Sprite();
private var s1:Sprite = new Sprite();
private var swapInt:int=0;
public static var urlArray:Array = ["http://ec3.images-amazon.com/images/I/410eIqft8%2BL._SL500_AA300_.jpg",
"http://ec3.images-amazon.com/images/I/31KQwxWXe3L._SL500_AA300_.jpg",
"http://ec3.images-amazon.com/images/I/415xG7a0ZDL._SL500_AA300_.jpg",
"http://ecx.images-amazon.com/images/I/41A79nE6RoL._SL500_PIsitb-sticker-arrow-big,TopRight,35,-73_SL135_OU09_.jpg",
"http://ecx.images-amazon.com/images/I/51V0s3h9fGL._SL160_SL125_.jpg",
"http://ec2.images-amazon.com/images/I/41TtzIVD3KL._SL500_AA300_.jpg",
"http://ec2.images-amazon.com/images/I/51bTAE%2B2KhL._SL500_AA300_.jpg"
];
private var button:PushButton;
private var search_btn:Button;
private var search_box:TextField;
private var search_action:SearchAction = new SearchAction();
/* constructor */
public function FlashTest() {
//initialize
this.addChild(s);
init();
//add search box
search_box = createTextField("search...",10,10,true);
this.addChild(search_box);
//add Button
search_btn = new Button("SEARCH!", 150);
search_btn.x = 220;
search_btn.y = 10;
search_btn.addEventListener(MouseEvent.CLICK, onTagSearch);
this.addChild(search_btn);
}
public function addURL(url:String):void{
urlArray.push(url);
}
private function init():void{
//s = new Sprite();
s1.addEventListener(MouseEvent.CLICK, closeImage);
//create imgArray
for(var n:int = 0;n < urlArray.length;n++){
var icon:Icon = new Icon(urlArray[n]);
icon.addEventListener(MouseEvent.CLICK, BigImage);
imgArray.push(icon);
}
for(n = 0;n < imgArray.length;n++){
imgArray[n].degree = -360 * n / imgArray.length;
imgArray[n].N = n;
}
//addChild(s);
this.addEventListener(Event.ENTER_FRAME,on_enterFrame);
//add imgArray
imgArray.sort(sortOnZ);
for(var i:int = 0; i < imgArray.length;i++){
s.addChildAt(imgArray[i] as Sprite, i);
}
//debug
}
private function createPushButton(msg:String, x:int, y:int):PushButton{
var btn:PushButton = new PushButton(this, x, y, msg, onTagSearch);
return btn;
}
private function createTextField(msg:String,x:int, y:int, isBorder:Boolean):TextField{
var tf:TextField = new TextField();
tf.type = TextFieldType.INPUT;
tf.border = isBorder;
tf.width = 200;
tf.height = 30;
tf.text = msg;
tf.x = x;
tf.y = y;
return tf;
}
private function clear():void{
while(urlArray.length > 0){urlArray.pop();}
while(imgArray.length > 0){imgArray.pop();}
while(s.numChildren > 0){ s.removeChildAt(s.numChildren-1);}
}
private function onTagSearch(event:MouseEvent):void{
if(search_box.text.length > 0){
clear();
//search
search_action.setQuery(search_box.text);
//deep copy
var deep:Array = search_action.urlArray.slice();
urlArray = deep;
init();
}
}
private function BigImage(e:MouseEvent):void
{
if(biFlag == false){
biFlag = true;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, s1_patch);
var icon:Icon = e.target as Icon;
loader.load(new URLRequest(urlArray[icon.N]));
s1.addChildAt(loader, 0);
addChild(s1);
}
}
private function on_enterFrame(e:Event):void
{
var length:int=imgArray.length;
swapInt++;
if(swapInt==5)
{
swapInt=0;
for(var i:int=0;i<length;i++)
{
for(var j:int=0;j<length;j++)
{
if(i!=j)
{
if(imgArray[i].hitTestObject(imgArray[j]))
{
if(imgArray[i].y>imgArray[j].y)
{
if(s.getChildIndex(imgArray[i])<s.getChildIndex(imgArray[j]))
{
s.swapChildren(imgArray[i],imgArray[j]);
}
}
}
}
}
}
}
}
private function s1_patch(e:Event):void{
s1.x = 250 - e.target.width / 2;
s1.y = 200 - e.target.height/ 2;
}
private function closeImage(e:MouseEvent):void{
if(biFlag){
biFlag = false;
s1.graphics.clear();
s1.removeChildAt(0);
}
}
private function front():void{
imgArray.sort(sortOnZ);
for(var i:int = 0; i < imgArray.length;i++){
s.addChildAt(imgArray[i] as Sprite, i);
}
}
private function sortOnZ(a:Icon, b:Icon):Number {
var aZ:Number = a.z;
var bZ:Number = b.z;
if(aZ < bZ) {
return 1;
} else if(aZ > bZ) {
return -1;
} else {
return 0;
}
}
}
}
import flash.display.*;
import flash.text.*;
class Button extends SimpleButton
{
public function Button(label:String, width:int = 0):void
{
var up:Sprite = _buildImage(label, 0xCCCCCC, width);
var over:Sprite = _buildImage(label, 0xFFCCCC, width);
var down:Sprite = _buildImage(label, 0xCC9999, width);
down.y = 1;
super(up, over, down, up);
}
private static function _buildImage(label:String, color:int, width:int = 0):Sprite
{
var text:TextField = new TextField();
text.defaultTextFormat = new TextFormat('Verdana', 10, 0x000000, true, null, null, null, null, TextFormatAlign.CENTER);
text.autoSize = TextFieldAutoSize.CENTER;
text.selectable = false;
text.text = label;
text.x = (width - text.width) >> 1;
text.y = 5;
var base:Shape = new Shape();
var g:Graphics = base.graphics;
g.beginFill(color);
g.drawRect(0, 0, width, text.height + 10);
g.endFill();
var sp:Sprite = new Sprite();
sp.addChild(base);
sp.addChild(text);
return sp;
}
}
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.utils.*;
class Icon extends Sprite{
private var img:Bitmap;
private var initialX:Number;
private var loader:Loader;
private var loader2:Loader;
private const SIZE:int = 100;
public var degree:Number = 0;
public var N:int;
public function Icon(str:String):void{
img = new Bitmap();
loader = new Loader();
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function():void { } );
loader.contentLoaderInfo.addEventListener(Event.INIT,init);
loader.load(new URLRequest(str), new LoaderContext(true));
}
private function init(e:Event):void{
loader2 = new Loader();
loader2.contentLoaderInfo.addEventListener(Event.INIT, initCOMP);
loader2.loadBytes(loader.contentLoaderInfo.bytes);
}
private function initCOMP(e:Event):void{
var l:Loader = e.currentTarget.loader;
var scale:Number = 0;
if(loader.height > SIZE){
if (loader.width < loader.height) scale = SIZE / loader.height;
else scale = SIZE / loader.width;
}else{
scale = 1;
}
var matrix:Matrix = new Matrix();
matrix.scale(scale, scale);
var bd:BitmapData = new BitmapData(scale * loader.width, scale * loader.height, false);
bd.draw(l, matrix);
img = new Bitmap(bd);
addChild(img);
//Reflect
var reverse:BitmapData = img.bitmapData.clone();
var reverseImg:Bitmap = new Bitmap(reverse);
reverseImg.scaleY = -1;
reverseImg.x = img.x;
reverseImg.y = img.height*2;
addChild(reverseImg);
reverseImg.filters = [rFilter(0.95)];
var degree:Number = 0;
addEventListener(Event.ENTER_FRAME, Circle);
}
private function Circle(e:Event):void{
degree-=0.5;
if(degree == -360)degree = 0;
e.target.x = 190 + 170 * Math.cos(Math.PI / 180 * degree);
e.target.y = 150 + 35 * Math.sin(Math.PI / 180 * degree);
e.target.z = -15 * Math.sin(Math.PI / 180 * degree);
}
private function rFilter(n:Number):ColorMatrixFilter{
var M:Array = new Array();
M = M.concat([n, 0, 0, 0, 0]);
M = M.concat([0, n, 0, 0, 0]);
M = M.concat([0, 0, n, 0, 0]);
M = M.concat([0, 0, 0, 0.3, 0]);
return new ColorMatrixFilter(M);
}
}
import flash.ui.Mouse;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BevelFilter;
import flash.filters.ColorMatrixFilter;
import flash.filters.DropShadowFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.text.TextField;
import flash.utils.escapeMultiByte;
import flash.filters.GlowFilter;
class SearchAction{
private var media:Namespace = new Namespace("http://search.yahoo.com/mrss/");
private var xml:XML;
private var url:String;
private static var numOfImage:int = 7;
private const FEED_URL:String = "http://pipes.yahooapis.com/pipes/pipe.run?_id=1FZD9tbQ3RGdxrAHbbsjiw&_render=rss&n=";
public var urlArray:Array;
public var loader:URLLoader;
private function getURL(query:String):String {
var url:String = FEED_URL + String(numOfImage) + "&q=" + escapeMultiByte(query);
return url;
}
public function setQuery(query:String):void{
var url:String = getURL(query);
getImageToFlickr(url);
}
private function getImageToFlickr(url:String):void {
var req:URLRequest = new URLRequest(url);
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
req.method = "GET";
loader.addEventListener(Event.COMPLETE, loadCompleted);
try {
loader.load(req);
} catch (error:Error) {}
}
private function loadCompleted(e:Event):void{
loader = URLLoader(e.target);
/* renew urlArray */
urlArray = new Array();
xml = new XML(loader.data);
default xml namespace = media;
for each(var element:Object in xml.channel.item){
var imgURL:String = element.media::group.media::content.@url;
urlArray.push(imgURL);
}
}
}