誰でもモネ forked from: 貼り絵 forked from: Hello World!!!
forked from 貼り絵 forked from: Hello World!!! (diff: 112)
forked from: nitoyon's ""Hello World!!!" まだまだ色々遊べそうです。 クリックで印象派っぽい絵に変換 やや重い注意 現時点で動かず
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;
}
}
