Forked from: Saqoosha's Snow diff:131 forked from: Snow 練習 nondelion forked:3favorite:9lines:99license : MIT License modified : 2009-05-18 11:33:53 Embed Tweet // forked from Saqoosha's Snow package { /* * 練習 */ import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.geom.Point; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.utils.Dictionary; [SWF(width=465, height=465, backgroundColor=0x0, frameRate=120)] public class TextTransition extends Sprite { private var bd:BitmapData; private var canvas:BitmapData; private var particles:Dictionary; private var bdp:Point; public function TextTransition() { canvas = new BitmapData(465, 465, false, 0x0); addChild( new Bitmap( canvas ) ); var tf:TextField = new TextField(); tf.defaultTextFormat = new TextFormat('Helvetica', 48, 0xffffff, true); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = 'Wonderfl!!'; bd = new BitmapData(tf.width, tf.height, false, 0x0); bd.draw(tf); bdp = new Point( Math.floor( (465 - tf.width) / 2 ), Math.floor( (465 - tf.height) / 2 ) ); particles = new Dictionary(); for (var i:int=0; i < tf.width; i++) { for (var j:int=0; j < tf.height; j++) { var color:uint = bd.getPixel(i, j); if ( color != 0x0 ) { var p:Particle = new Particle(); p.x = i + bdp.x; p.y = j + bdp.y; p.cx = Math.random() * 465; p.cy = Math.random() * 465; p.vx = 16; p.vy = 20; p.color = color; particles[p] = true; } } } addEventListener( Event.ENTER_FRAME, update ); stage.addEventListener( MouseEvent.CLICK, clickHandler ); } private function clickHandler(e:MouseEvent):void { canvas.lock(); canvas.fillRect(canvas.rect, 0x0); for (var key:* in particles) { var p:Particle = Particle(key); p.cx = Math.random() * 465; p.cy = Math.random() * 465; canvas.setPixel(p.cx, p.cy, p.color); } canvas.unlock(); } private function update(e:Event):void { canvas.lock(); canvas.fillRect(canvas.rect, 0x0); for (var key:* in particles) { var p:Particle = Particle(key); p.cx += (p.x - p.cx )/p.vx; p.cy += (p.y - p.cy )/p.vy; if ( Math.abs( p.cx - p.x ) <= 1 && Math.abs( p.cy - p.y) <= 1) { p.cx = p.x; p.cy = p.y; //delete particles[p]; } canvas.setPixel(p.cx, p.cy, p.color); } canvas.unlock(); } } } class Particle { public var color:int; public var x:Number; public var y:Number; public var cx:Number; public var cy:Number; public var vx:Number; public var vy:Number; public function Particle() { color = 0xffffff; x = 0; y = 0; cx = 0; cy = 0; vx = 0; vy = 0; } } Code Fullscreen Preview Fullscreen DOS whitewillow tecchi182 osamX CLAPTAPS furushchev : logo darman : particle taki1052 : particleとロゴ takeken : particles particle particles Dictionary height width Math.abs Math.floor MouseEvent.ENTER_FRAME MouseEvent.CLICK TextFieldAutoSize.LEFT MouseEvent addEventListener addChild text Point Math.random uint Sprite int Number sort new page view favorite forked pv79 forked from: forked from: Snow.. ekumeko forked:0 favorite:0lines:99 (diff:2) pv383 forked from: Snow nondelion forked:0 favorite:1lines:105 (diff:22) pv275 forked from: forked from: Snow.. hacker_quje8j4f forked:0 favorite:1lines:99 (diff:1)