Toggle navigation
Sign Up
Log In
Explore
Works
Folders
Tools
Collections
Artists
Groups
Groups
Topics
Tasks
Tasks
Jobs
Teams
Jobs
Recommendation
More Effects...
ActionScript
// forked from dimentity's particleText // MdN BOOKS - THE NETA-cho Deluxe FLASH TECHNIC 参考 // wonderfl用にクラスを1つにまとめました。 // コメント省いてすみません。 package { import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; [SWF(width = "465", height = "465", backgroundColor = "0x000000", frameRate = "30")] public class ParticleText extends Sprite { private var canvas:BitmapData; private var textCanvas:BitmapData; private var _num:int = 0; private var maxDis:int = 400; // particles private var particleX:Array = new Array(); private var particleY:Array = new Array(); private var particleEx:Array = new Array(); private var particleEy:Array = new Array(); private var particleC:Array = new Array(); public function ParticleText() { canvas = new BitmapData( stage.stageWidth, stage.stageHeight, false, 0x000000 ); addChild(new Bitmap(canvas)); var tf:TextField = new TextField(); tf.defaultTextFormat = new TextFormat( "Times New Roman", 60, 0xFFFFFF ); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "EffectHub\nCom\nParticle\nText"; textCanvas = new BitmapData( tf.textWidth, tf.textHeight, false, 0x000000 ); textCanvas.draw(tf); var ofx:Number = stage.stageWidth / 2 - textCanvas.width / 2; var ofy:Number = stage.stageHeight / 2 - textCanvas.height / 2; var num:Number = 0; var rad:Number; var dis:Number; for (var ex:Number = 0; ex < textCanvas.width; ex++) { for (var ey:Number = 0; ey < textCanvas.height; ey++) { var c:uint = textCanvas.getPixel(ex, ey); if (c != 0x000000) { particleEx[num] = ex + ofx; particleEy[num] = ey + ofy; particleC[num] = c; rad = Math.random() * (Math.PI * 2); dis = Math.random() * maxDis; particleX[num] = ex + dis * Math.cos(rad); particleY[num] = ex + dis * Math.sin(rad); num++; } } } stage.addEventListener(Event.ENTER_FRAME, onEnterframe); } private function onEnterframe( evt:Event ):void { canvas.lock(); canvas.fillRect(canvas.rect, 0x000000); for(var i:int = 0; i < _num; i++) { if(Math.abs(particleEx[i] - particleX[i]) < 0.5 && Math.abs(particleEy[i] - particleY[i]) < 0.5) { particleX[i] = particleEx[i]; particleY[i] = particleEy[i]; } else { particleX[i] += (particleEx[i] - particleX[i]) * 0.1; particleY[i] += (particleEy[i] - particleY[i]) * 0.1; } canvas.setPixel(particleX[i], particleY[i], particleC[i]); } var n:int = particleX.length; _num = (_num + 30 < n) ? _num + 30 : particleX.length; canvas.unlock(); } } }
Join Effecthub.com
Working with Global Gaming Artists and Developers!
Login
Sign Up
Or Login with Your Email Address:
Email
Password
Remember
Or Sign Up with Your Email Address:
Your Email
This field must contain a valid email
Set Password
Password should be at least 1 character
Stay informed via email