Practice No9 崩れて溜まる文字列 NA8 forked:0favorite:0lines:88license : MIT License modified : 2010-09-29 23:31:43 Embed Tweet package { import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.Event; import flash.filters.BlurFilter; import flash.geom.Point; import flash.geom.Rectangle; import flash.text.TextField; import flash.text.TextFormat; [SWF(width=465,height=465,backgroundColor=0x000000)] public class FallParticleText2 extends Sprite { private const TEXTCOLOR:uint=Math.random()*0xffffff; private var b:Bitmap; private var bmp:BitmapData; private var bmd:BitmapData; private var list:Array=new Array; private var dept:Array=new Array; private var p_num:uint=0; private var filter:BlurFilter = new BlurFilter(2,2,2); public function FallParticleText2() { if(stage){ addEventListener(Event.ADDED_TO_STAGE,init); }else{ init(); } } private function init(e:Event=null):void{ removeEventListener(Event.ADDED_TO_STAGE,init); var tx:TextField=new TextField(); tx.autoSize="left"; tx.defaultTextFormat =new TextFormat("_ゴシック" ,54 ,TEXTCOLOR ,true); tx.text="崩れて溜まる文字列"; var tw:Number=tx.width; var th:Number=465; //tx.height; bmp=new BitmapData(tw,465,true,0); bmp.draw(tx,null,null,null ,new Rectangle(0,0,int(tw),int(th)) ,true); b=new Bitmap(bmp,"auto",true); addChild(b); for(var j:int=0;j<int(tw);j++){ dept.push(int(466)); for(var i:int=0;i<int(th);i++){ var p:Particle = new Particle(); p.x = j; p.y = i; p.vy =int(Math.random()*p.y)+1; p.color32 = bmp.getPixel32(j,i) ; p.color = bmp.getPixel(j,i) ; list.push(p); } } addEventListener(Event.ENTER_FRAME, loop); } private function loop(e:Event=null):void{ bmp.applyFilter(bmp,bmp.rect, new Point(0,0),filter); var p:Particle; bmp.lock(); var i:uint=0; while(i<list.length){ p=list[i]; if((p.y+p.vy)>=dept[p.x] && p.vy>0 && (p.color32>>>24)!=0){ p.vy=0; dept[p.x]-=1; p.y=dept[p.x]; }else{ p.y+=p.vy; } bmp.setPixel32(p.x, p.y,p.color32); i++; } bmp.unlock(); } } } class Particle{ public var x:Number; public var y:Number public var vx:Number; public var vy:Number; public var color:uint; public var color32:uint; } Code Fullscreen Preview Fullscreen Particle Practice Text filter Event.ADDED_TO_STAGE getPixel32 setPixel32 unlock lock BlurFilter getPixel applyFilter width BitmapData draw Rectangle color rect TextFormat Event push text Event.ENTER_FRAME