誰でもモネ    forked from: 貼り絵 forked from: Hello World!!!

by 4_D forked from 貼り絵 forked from: Hello World!!! (diff: 112)
forked from: nitoyon's ""Hello World!!!"
まだまだ色々遊べそうです。
クリックで印象派っぽい絵に変換
やや重い注意 現時点で動かず
♥0 | Line 82 | Modified 2010-06-25 14:00:25 | MIT License
play

ActionScript3 source code

/**
 * Copyright 4_D ( http://wonderfl.net/user/4_D )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/e3TA
 */

// forked from otias's 貼り絵 forked from: Hello World!!!
//forked from: nitoyon's ""Hello World!!!"
//まだまだ色々遊べそうです。

//クリックで印象派っぽい絵に変換
//やや重い注意 現時点で動かず

package{
    import flash.display.Loader;
    import flash.net.URLRequest;
    import caurina.transitions.Tweener;
    
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.BlurFilter;
    import flash.geom.Point;

    public class Monet extends Sprite{
       //名前空間
        private var imgBitmapData : BitmapData;
        private var imgBitmap : Bitmap;
        private var dotSize : int = 10;
       // private var imgData: Sprite;
        private var drawArea : Sprite;
        private var blur:BlurFilter = new BlurFilter(11,1);
        private var imgData:Sprite;
        
        public function Monet():void{
            //コピーしたURLforked from: 貼り絵 forked from: Hello World!!! | wonderfl 
            var url:String = "http://wonderfl.net/static/tmp/related_images/109c270f874c52b4658706c70558f6209aadc07fm"
            
            //ステージに配置
            var urlReq:URLRequest = new URLRequest(url);
            var imgData:Loader = new Loader();
            imgData.load(urlReq);
            addChild( imgData);
            imgData.x = 0;
            imgData.y = 0;
            imgData.scaleX =2.5;
            imgData.scaleY =2.5;

            addChild( drawArea );
            //キャプチャしてBitmapを作成
 
            imgBitmapData = new BitmapData( imgData.width , imgData.height );
            imgBitmapData.draw( this );
            
            //最初にドットを描く
            //imgData.addEventListener( MouseEvent.CLICK , startDraw );
            //function startDraw ( event : MouseEvent ) : void
            //{
               removeChild(imgData);
                drawDot( dotSize );
           
            
            function drawDot ( dotSize : int ) : void
            {
                for ( var i : int = 0 ; i < imgData.width / dotSize - 1 ; i++ )
                {
                    for ( var j : int = 0 ; j < imgData.height / dotSize ; j++ )
                    {
                        
                        Tweener.addTween( randomize( drawArea.addChild( new Rect( imgBitmapData.getPixel( i * dotSize + dotSize / 2 , j * dotSize + dotSize / 2 )))) ,
                            {
                                x: i * dotSize + dotSize / 2 ,
                                y: j * dotSize + dotSize / 2 ,
                                alpha: 1 ,
                                delay: 0.7 + Math.random() * 4 ,
                                time: 0
                            }
                        );
                        
                    }
                }
                //2回目クリック以降の処理
                //imgData.removeEventListener(MouseEvent.CLICK,startDraw);
                var blurArray:Array = drawArea.filters;
                blurArray.push(blur);
                drawArea.filters = blurArray;
            }
            
            function randomize ( d : DisplayObject ) : DisplayObject
            {
                d.x = Math.random() * drawArea.width;
                d.y = Math.random() * drawArea.height;
                d.alpha = 0;
                return d;
            }
        }
    }}


import flash.display.*;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;

class Rect extends Shape
{
    private var rectSize : int = 10;
    
    public function Rect ( color : uint ) : void
    {
        graphics.lineStyle( 0.5 , color);
        graphics.beginFill( color );
        graphics.drawRect( 0 , 0 , rectSize , rectSize );
        graphics.endFill();
                
        alpha = Math.random();
        rotation = Math.random() * 90 - 25;
        scaleX = Math.random()*1.5+0.6;
        scaleY = Math.random()*1.5+0.6;
        
    }
}