点描風 コードは書き殴った感じで、きれいではないですけど。。 moringo2 forked:3favorite:19lines:219license : MIT License modified : 2010-03-10 15:25:10 Embed Tweet package{ //コードは書き殴った感じで、きれいではないですけど。。 import flash.display.*; import flash.net.* import flash.events.Event; import flash.geom.*; import flash.system.LoaderContext; import caurina.transitions.Tweener; public class IMTest extends MovieClip{ private const imgPaths:Array = ["http://moringo.moo.jp/out/b01.jpg","http://moringo.moo.jp/out/b02.jpg", "http://moringo.moo.jp/out/b03.jpg","http://moringo.moo.jp/out/b04.jpg", "http://moringo.moo.jp/out/b05.jpg"]; private var canvas:Sprite private var bm:Bitmap; private var bmd:BitmapData; private var pixels:Vector.<uint>; private var counter:int = 0; private var loader:Loader; public function IMTest(){ init(); } private function init(){ counter = 0; canvas = new Sprite(); addChild(canvas) loader = new Loader(); loader.load(new URLRequest(imgPaths[Math.floor(Math.random()*6)]),new LoaderContext(true)) loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comp) } private function comp(e:Event){ loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,comp) bm = loader.content as Bitmap; bmd = bm.bitmapData; pixels = bm.bitmapData.getVector(new Rectangle(0,0,bmd.width,bmd.height)); canvas.addEventListener(Event.ENTER_FRAME,drawCircle) } private function drawCircle(e:Event){ var s:Sprite = e.target as Sprite; for(var i:int=0; i<40; i++){ var randX:int = Math.floor(Math.random() * bmd.width)+1; var randY:int = Math.floor(Math.random() * bmd.height)+1; var pixelnumber:int = bmd.width*(randY-1) +randX; s.graphics.beginFill(hex(avgColor(pixelnumber)),Math.random()*0.6+0.4); s.graphics.drawCircle(randX,randY,Math.random()*5+1); s.graphics.endFill(); } counter ++; if(counter >= 350){ e.target.removeEventListener(Event.ENTER_FRAME,drawCircle) loader = null; removeChild(canvas); canvas = null; bm = null; bmd = null; init(); }else{ } } private function avgColor(pix:uint):Array{ var p:Point = positionXY(pix); var targetPositions:Array if(p.x == 1 && p.y ==1){ targetPositions = [1,2,3, 1+bmd.width, 1+bmd.width+1, 1+bmd.width+2, 1+bmd.width*2, 1+bmd.width*2+1, 1+bmd.width*2+2]; }else if(p.x == 2 && p.y ==1){ targetPositions = [1,2,3,4, 1+bmd.width, 1+bmd.width+1, 1+bmd.width+2, 1+bmd.width+3, 1+bmd.width*2, 1+bmd.width*2+1, 1+bmd.width*2+2,1+bmd.width*2+3]; }else if(p.x >= 3 && p.x <= bmd.width-2 && p.y == 1){ targetPositions = [p.x-2, p.x-1, p.x, p.x+1, p.x+2, p.x+bmd.width-2, p.x+bmd.width-1, p.x+bmd.width, p.x+bmd.width+1, p.x+bmd.width+2, p.x+bmd.width*2-2, p.x+bmd.width*2-1, p.x+bmd.width*2, p.x+bmd.width*2+1, p.x+bmd.width*2+2 ] }else if(p.x == bmd.width-1 && p.y ==1){ targetPositions = [p.x-2, p.x-1, p.x, p.x+1, p.x+bmd.width-2, p.x+bmd.width-1, p.x+bmd.width, p.x+bmd.width+1, p.x+bmd.width*2-2, p.x+bmd.width*2-1, p.x+bmd.width*2, p.x+bmd.width*2+1 ] }else if(p.x == bmd.width && p.y ==1){ targetPositions = [p.x-2, p.x-1, p.x, p.x+bmd.width-2, p.x+bmd.width-1, p.x+bmd.width, p.x+bmd.width*2-2, p.x+bmd.width*2-1, p.x+bmd.width*2 ] }else if(p.x == 1 && p.y ==2){ targetPositions = [pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix, pix+1, p.x+2, pix+bmd.width, pix+bmd.width+1, pix+bmd.width+2, pix+bmd.width*2, pix+bmd.width*2+1, pix+bmd.width*2+2 ] }else if(p.x == 2 && p.y ==2){ targetPositions = [pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix-1, pix, pix+1, pix+2, pix+bmd.width-1, pix+bmd.width, pix+bmd.width+1, pix+bmd.width+2, pix+bmd.width*2-1, pix+bmd.width*2, pix+bmd.width*2+1, pix+bmd.width*2+2 ] }else if(p.x >= 3 && p.x <= bmd.width-2 && p.y ==2){ targetPositions = [pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix-2, pix-1, pix, pix+1, pix+2, pix+bmd.width-2, pix+bmd.width-1, pix+bmd.width, pix+bmd.width+1, pix+bmd.width+2, pix+bmd.width*2-2, pix+bmd.width*2-1, pix+bmd.width*2, pix+bmd.width*2+1, pix+bmd.width*2+2] }else if(p.x == bmd.width-1 && p.y ==2){ targetPositions = [pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-2, pix-1, pix, pix+1, pix+2, pix+bmd.width-2, pix+bmd.width-1, pix+bmd.width, pix+bmd.width+1, pix+bmd.width*2-2, pix+bmd.width*2-1, pix+bmd.width*2, pix+bmd.width*2+1] }else if(p.x == bmd.width && p.y ==2){ targetPositions = [pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-2, pix-1, pix, pix+1, pix+2, pix+bmd.width-2, pix+bmd.width-1, pix+bmd.width, pix+bmd.width*2-2, pix+bmd.width*2-1, pix+bmd.width*2] }else if(p.x == 1 && p.y >=3 && p.y<=bmd.height-2){ targetPositions = [pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix, pix+1, pix+2, pix+bmd.width, pix+bmd.width+1, pix+bmd.width+2, pix+bmd.width*2, pix+bmd.width*2+1, pix+bmd.width*2+2] }else if(p.x == 2 && p.y >=3 && p.y<=bmd.height-2){ targetPositions = [pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix-1, pix, pix+1, pix+2, pix+bmd.width-1, pix+bmd.width, pix+bmd.width+1, pix+bmd.width+2, pix+bmd.width*2-1, pix+bmd.width*2, pix+bmd.width*2+1, pix+bmd.width*2+2] }else if(p.x == bmd.width-1 && p.y >=3 && p.y<=bmd.height-2){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-2,pix-1, pix, pix+1, pix+bmd.width-2,pix+bmd.width-1, pix+bmd.width, pix+bmd.width+1, pix+bmd.width*2-2, pix+bmd.width*2-1, pix+bmd.width*2, pix+bmd.width*2+1] }else if(p.x == bmd.width && p.y >=3 && p.y<=bmd.height-2){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-2,pix-1, pix, pix+bmd.width-2,pix+bmd.width-1, pix+bmd.width, pix+bmd.width*2-2, pix+bmd.width*2-1, pix+bmd.width*2] }else if(p.x == 1 && p.y == bmd.height -1){ targetPositions = [pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix,pix+1, pix+2, pix+bmd.width,pix+bmd.width+1, pix+bmd.width+2] }else if(p.x == 1 && p.y == bmd.height){ targetPositions = [pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix,pix+1, pix+2] }else if(p.x == 2 && p.y == bmd.height -1){ targetPositions = [pix-bmd.width*2-1,pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width-1,pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix-1,pix,pix+1, pix+2, pix+bmd.width-1,pix+bmd.width,pix+bmd.width+1, pix+bmd.width+2] }else if(p.x == 2 && p.y == bmd.height){ targetPositions = [pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix-1, pix, pix+1, pix+2] }else if(p.x == bmd.width-1 && p.y == bmd.height -1){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-2,pix-1,pix, pix+1, pix+bmd.width-2,pix+bmd.width-1, pix+bmd.width, pix+bmd.width+1] }else if(p.x == bmd.width && p.y == bmd.height -1){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-2,pix-1,pix, pix+bmd.width-2,pix+bmd.width-1, pix+bmd.width] }else if(p.x == bmd.width-1 && p.y == bmd.height){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-2,pix-1,pix, pix+1] }else if(p.x == bmd.width && p.y == bmd.height){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-2,pix-1,pix] }else if(p.x >=3 && p.x <= bmd.width-2 && p.y == bmd.height){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1,pix-bmd.width*2+2, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width,pix-bmd.width+1,pix-bmd.width+2, pix-2,pix-1,pix,pix+1,pix+2] }else if(p.x >=3 && p.x <= bmd.width-2 && p.y == bmd.height-1){ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1,pix-bmd.width*2+2, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width,pix-bmd.width+1,pix-bmd.width+2, pix-2,pix-1,pix,pix+1,pix+2, pix+bmd.width-2,pix+bmd.width-1, pix+bmd.width,pix+bmd.width+1,pix+bmd.width+2] }else{ targetPositions = [pix-bmd.width*2-2, pix-bmd.width*2-1, pix-bmd.width*2, pix-bmd.width*2+1, pix-bmd.width*2+2, pix-bmd.width-2, pix-bmd.width-1, pix-bmd.width, pix-bmd.width+1, pix-bmd.width+2, pix-2,pix-1,pix,pix+1,pix+2, pix+bmd.width-2,pix+bmd.width-1, pix+bmd.width, pix+bmd.width*2-2,pix+bmd.width*2-1, pix+bmd.width*2,pix+bmd.width*2+1,pix+bmd.width*2+2] } return avgColorWithArray(targetPositions); } private function avgColorWithArray(target:Array):Array{ var a:int =0; var r:int =0; var g:int =0; var b:int =0; for(var i:int=0; i< target.length; i++){ var ar:Array = argb(pixels[target[i] -1]) a += ar[0]; r += ar[1]; g += ar[2]; b += ar[3]; } return [Math.floor(a/target.length), Math.floor(r/target.length), Math.floor(g/target.length), Math.floor(b/target.length)] } private function positionXY(p:uint):Point{ var x:uint = p % bmd.width; if(x == 0) x = bmd.width; var y:uint = Math.ceil(p / bmd.width); return new Point(x,y); } private function argb(hex:uint):Array{ var alpha:int = hex >> 24 & 0xFF; var red:int = hex >> 16 & 0xFF; var green:int = hex >> 8 & 0xFF; var blue:int = hex & 0xFF; return [alpha, red, green, blue]; } private function hex(argb:Array):int{ var color:uint; //color |= argb[0] << 24; color |= argb[1] << 16; color |= argb[2] << 8; color |= argb[3]; return int("0x"+color.toString(16)); } } } Code Fullscreen Preview Fullscreen zmaxlin alwAYs tkinjo eternity_hir.. siouxcitizen.. OKASUKE 178ep3 ngtn narutohyper atsumo clockmaker Nicolas uranodai hacker_w7d9y.. : coolmust sdkfz181tige.. : まさしく点描画!素敵 ktu : Bitmappaintパーティクル chebit : paintpaint kitsionchen : 漂亮 norichika2 : Bitmap Bitmap cool must paint パーティクル toString MovieClip Array sort new page view favorite forked pv200 forked from: 点描風 gyo forked:0 favorite:0lines:221 (diff:13) pv67 forked from: 点描風 k-a-z-a-m forked:0 favorite:0lines:219 (diff:1) pv1023 forked from: 点描風 uwi forked:2 favorite:3lines:88 (diff:248)