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

优化排序

Get Adobe Flash player
by qq49121294 27 Jul 2011
    Embed
/**
 * 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);
        }


    }
}