In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

100k particles THE BUBBLE

いろんな人のコードを参考にさせていただきました. 「重力マウス」の系統です.
forkしにくいコードになってしまいましたが, FlashDevelopのCtrl+Q(コメント切り替え)とCtrl+H(置換)で"Look in:"->"Code and strings"を使えばなんとか.
Get Adobe Flash player
by matacat 17 Jan 2011
/**
 * Copyright matacat ( http://wonderfl.net/user/matacat )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/r3mz
 */

package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.geom.ColorTransform;
    
    [SWF(width = 465, height = 465, frameRate = 60)]
    
    public class ParticleFesta extends Sprite
    {
        private const TOTAL:int = 100000;
        
        private const PPN:int = 10;
        private const TN:int  = TOTAL / PPN >> 0;
        
        private var head:Node;
        private var screen:BitmapData = new BitmapData(465, 465, false, 0x000000);
        private var buffer:BitmapData = screen.clone();
        private var blur:BlurFilter   = new BlurFilter();
        private var ct:ColorTransform = new ColorTransform(3/4, 3/4, 3/4);
        
        public function ParticleFesta()
        {
            stage.quality       = "low";
            stage.scaleMode     = "noScale";
            stage.mouseChildren = false;
            stage.tabChildren   = false;
            
            addChild(new Bitmap(screen, "never"));
            
            var n:Node = new Node(null);
            for (var i:int = 1; i < TN; i++) n = new Node(n);
            head = n;
            
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        
        private function onEnterFrame(e:Event):void
        {
            buffer.applyFilter(screen, screen.rect, buffer.rect.topLeft, blur);
            buffer.colorTransform(buffer.rect, ct);
            
            var n:Node    = head;
            var gx:Number = stage.mouseX;
            var gy:Number = stage.mouseY;
            var dx:Number, dy:Number, d:Number, c:uint;
            do {
                //dx = gx - n.r#x;
                //dy = gy - n.r#y;
                //d  = 5.# / (dx * dx + dy * dy + 1);
                //n.r#x += n.v#x += dx * d;
                //n.r#y += n.v#y += dy * d;
                //if      (n.r#x <    0) { n.r#x =      0; n.v#x = 0; }
                //else if (n.r#x >= 465) { n.r#x = 464.99; n.v#x = 0; }
                //if      (n.r#y <    0) { n.r#y =      0; n.v#y = 0; }
                //else if (n.r#y >= 465) { n.r#y = 464.99; n.v#y = 0; }
                //c = buffer.getPixel(n.r#x >> 0, n.r#y >> 0);
                //    buffer.setPixel(n.r#x >> 0, n.r#y >> 0,
                //    ((c >> 16       ) * 3 + 0xFF >> 2) << 16 |
                //    ((c >>  8 & 0xFF) * 3 + 0xFF >> 2) <<  8 |
                //    ((c       & 0xFF) * 3 + 0xFF >> 2)
                //);
                
                dx = gx - n.r1x;
                dy = gy - n.r1y;
                d  = 5.1 / (dx * dx + dy * dy + 1);
                n.r1x += n.v1x += dx * d;
                n.r1y += n.v1y += dy * d;
                if      (n.r1x <    0) { n.r1x =      0; n.v1x = 0; }
                else if (n.r1x >= 465) { n.r1x = 464.99; n.v1x = 0; }
                if      (n.r1y <    0) { n.r1y =      0; n.v1y = 0; }
                else if (n.r1y >= 465) { n.r1y = 464.99; n.v1y = 0; }
                c = buffer.getPixel(n.r1x >> 0, n.r1y >> 0);
                    buffer.setPixel(n.r1x >> 0, n.r1y >> 0,
                    ((c >> 16       ) * 3 + 0xFF >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3        >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0xFF >> 2)
                );
                
                dx = gx - n.r2x;
                dy = gy - n.r2y;
                d  = 5.2 / (dx * dx + dy * dy + 1);
                n.r2x += n.v2x += dx * d;
                n.r2y += n.v2y += dy * d;
                if      (n.r2x <    0) { n.r2x =      0; n.v2x = 0; }
                else if (n.r2x >= 465) { n.r2x = 464.99; n.v2x = 0; }
                if      (n.r2y <    0) { n.r2y =      0; n.v2y = 0; }
                else if (n.r2y >= 465) { n.r2y = 464.99; n.v2y = 0; }
                c = buffer.getPixel(n.r2x >> 0, n.r2y >> 0);
                    buffer.setPixel(n.r2x >> 0, n.r2y >> 0,
                    ((c >> 16       ) * 3 + 0x55 >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3        >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0xFF >> 2)
                );
                
                dx = gx - n.r3x;
                dy = gy - n.r3y;
                d  = 5.3 / (dx * dx + dy * dy + 1);
                n.r3x += n.v3x += dx * d;
                n.r3y += n.v3y += dy * d;
                if      (n.r3x <    0) { n.r3x =      0; n.v3x = 0; }
                else if (n.r3x >= 465) { n.r3x = 464.99; n.v3x = 0; }
                if      (n.r3y <    0) { n.r3y =      0; n.v3y = 0; }
                else if (n.r3y >= 465) { n.r3y = 464.99; n.v3y = 0; }
                c = buffer.getPixel(n.r3x >> 0, n.r3y >> 0);
                    buffer.setPixel(n.r3x >> 0, n.r3y >> 0,
                    ((c >> 16       ) * 3        >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0x55 >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0xFF >> 2)
                );
                
                dx = gx - n.r4x;
                dy = gy - n.r4y;
                d  = 5.4 / (dx * dx + dy * dy + 1);
                n.r4x += n.v4x += dx * d;
                n.r4y += n.v4y += dy * d;
                if      (n.r4x <    0) { n.r4x =      0; n.v4x = 0; }
                else if (n.r4x >= 465) { n.r4x = 464.99; n.v4x = 0; }
                if      (n.r4y <    0) { n.r4y =      0; n.v4y = 0; }
                else if (n.r4y >= 465) { n.r4y = 464.99; n.v4y = 0; }
                c = buffer.getPixel(n.r4x >> 0, n.r4y >> 0);
                    buffer.setPixel(n.r4x >> 0, n.r4y >> 0,
                    ((c >> 16       ) * 3        >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0xFF >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0xFF >> 2)
                );
                
                dx = gx - n.r5x;
                dy = gy - n.r5y;
                d  = 5.5 / (dx * dx + dy * dy + 1);
                n.r5x += n.v5x += dx * d;
                n.r5y += n.v5y += dy * d;
                if      (n.r5x <    0) { n.r5x =      0; n.v5x = 0; }
                else if (n.r5x >= 465) { n.r5x = 464.99; n.v5x = 0; }
                if      (n.r5y <    0) { n.r5y =      0; n.v5y = 0; }
                else if (n.r5y >= 465) { n.r5y = 464.99; n.v5y = 0; }
                c = buffer.getPixel(n.r5x >> 0, n.r5y >> 0);
                    buffer.setPixel(n.r5x >> 0, n.r5y >> 0,
                    ((c >> 16       ) * 3        >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0xFF >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0x55 >> 2)
                );
                
                dx = gx - n.r6x;
                dy = gy - n.r6y;
                d  = 5.6 / (dx * dx + dy * dy + 1);
                n.r6x += n.v6x += dx * d;
                n.r6y += n.v6y += dy * d;
                if      (n.r6x <    0) { n.r6x =      0; n.v6x = 0; }
                else if (n.r6x >= 465) { n.r6x = 464.99; n.v6x = 0; }
                if      (n.r6y <    0) { n.r6y =      0; n.v6y = 0; }
                else if (n.r6y >= 465) { n.r6y = 464.99; n.v6y = 0; }
                c = buffer.getPixel(n.r6x >> 0, n.r6y >> 0);
                    buffer.setPixel(n.r6x >> 0, n.r6y >> 0,
                    ((c >> 16       ) * 3 + 0x55 >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0xFF >> 2) <<  8 |
                    ((c       & 0xFF) * 3        >> 2)
                );
                
                dx = gx - n.r7x;
                dy = gy - n.r7y;
                d  = 5.7 / (dx * dx + dy * dy + 1);
                n.r7x += n.v7x += dx * d;
                n.r7y += n.v7y += dy * d;
                if      (n.r7x <    0) { n.r7x =      0; n.v7x = 0; }
                else if (n.r7x >= 465) { n.r7x = 464.99; n.v7x = 0; }
                if      (n.r7y <    0) { n.r7y =      0; n.v7y = 0; }
                else if (n.r7y >= 465) { n.r7y = 464.99; n.v7y = 0; }
                c = buffer.getPixel(n.r7x >> 0, n.r7y >> 0);
                    buffer.setPixel(n.r7x >> 0, n.r7y >> 0,
                    ((c >> 16       ) * 3 + 0xFF >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0xFF >> 2) <<  8 |
                    ((c       & 0xFF) * 3        >> 2)
                );
                
                dx = gx - n.r8x;
                dy = gy - n.r8y;
                d  = 5.8 / (dx * dx + dy * dy + 1);
                n.r8x += n.v8x += dx * d;
                n.r8y += n.v8y += dy * d;
                if      (n.r8x <    0) { n.r8x =      0; n.v8x = 0; }
                else if (n.r8x >= 465) { n.r8x = 464.99; n.v8x = 0; }
                if      (n.r8y <    0) { n.r8y =      0; n.v8y = 0; }
                else if (n.r8y >= 465) { n.r8y = 464.99; n.v8y = 0; }
                c = buffer.getPixel(n.r8x >> 0, n.r8y >> 0);
                    buffer.setPixel(n.r8x >> 0, n.r8y >> 0,
                    ((c >> 16       ) * 3 + 0xFF >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0x55 >> 2) <<  8 |
                    ((c       & 0xFF) * 3        >> 2)
                );
                
                dx = gx - n.r9x;
                dy = gy - n.r9y;
                d  = 5.9 / (dx * dx + dy * dy + 1);
                n.r9x += n.v9x += dx * d;
                n.r9y += n.v9y += dy * d;
                if      (n.r9x <    0) { n.r9x =      0; n.v9x = 0; }
                else if (n.r9x >= 465) { n.r9x = 464.99; n.v9x = 0; }
                if      (n.r9y <    0) { n.r9y =      0; n.v9y = 0; }
                else if (n.r9y >= 465) { n.r9y = 464.99; n.v9y = 0; }
                c = buffer.getPixel(n.r9x >> 0, n.r9y >> 0);
                    buffer.setPixel(n.r9x >> 0, n.r9y >> 0,
                    ((c >> 16       ) * 3 + 0xFF >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3        >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0x55 >> 2)
                );
                
                dx = gx - n.r0x;
                dy = gy - n.r0y;
                d  = 5.0 / (dx * dx + dy * dy + 1);
                n.r0x += n.v0x += dx * d;
                n.r0y += n.v0y += dy * d;
                if      (n.r0x <    0) { n.r0x =      0; n.v0x = 0; }
                else if (n.r0x >= 465) { n.r0x = 464.99; n.v0x = 0; }
                if      (n.r0y <    0) { n.r0y =      0; n.v0y = 0; }
                else if (n.r0y >= 465) { n.r0y = 464.99; n.v0y = 0; }
                c = buffer.getPixel(n.r0x >> 0, n.r0y >> 0);
                    buffer.setPixel(n.r0x >> 0, n.r0y >> 0,
                    ((c >> 16       ) * 3 + 0xFF >> 2) << 16 |
                    ((c >>  8 & 0xFF) * 3 + 0xFF >> 2) <<  8 |
                    ((c       & 0xFF) * 3 + 0xFF >> 2)
                );
                
            } while (n = n.next);
            
            screen.copyPixels(buffer, buffer.rect, screen.rect.topLeft);
        }
    }
}

class Node
{
    //public var r#x:Number;
    //public var r#y:Number;
    //public var v#x:Number = 0;
    //public var v#y:Number = 0;
    
    public var r0x:Number;
    public var r0y:Number;
    public var v0x:Number = 0;
    public var v0y:Number = 0;
    
    public var r1x:Number;
    public var r1y:Number;
    public var v1x:Number = 0;
    public var v1y:Number = 0;
    
    public var r2x:Number;
    public var r2y:Number;
    public var v2x:Number = 0;
    public var v2y:Number = 0;
    
    public var r3x:Number;
    public var r3y:Number;
    public var v3x:Number = 0;
    public var v3y:Number = 0;
    
    public var r4x:Number;
    public var r4y:Number;
    public var v4x:Number = 0;
    public var v4y:Number = 0;
    
    public var r5x:Number;
    public var r5y:Number;
    public var v5x:Number = 0;
    public var v5y:Number = 0;
    
    public var r6x:Number;
    public var r6y:Number;
    public var v6x:Number = 0;
    public var v6y:Number = 0;
    
    public var r7x:Number;
    public var r7y:Number;
    public var v7x:Number = 0;
    public var v7y:Number = 0;
    
    public var r8x:Number;
    public var r8y:Number;
    public var v8x:Number = 0;
    public var v8y:Number = 0;
    
    public var r9x:Number;
    public var r9y:Number;
    public var v9x:Number = 0;
    public var v9y:Number = 0;
    
    public var next:Node;
    
    public function Node(next:Node)
    {
        //r#x = Math.random() * 465;
        //r#y = Math.random() * 465;
        
        r0x = Math.random() * 465;
        r0y = Math.random() * 465;
        
        r1x = Math.random() * 465;
        r1y = Math.random() * 465;
        
        r2x = Math.random() * 465;
        r2y = Math.random() * 465;
        
        r3x = Math.random() * 465;
        r3y = Math.random() * 465;
        
        r4x = Math.random() * 465;
        r4y = Math.random() * 465;
        
        r5x = Math.random() * 465;
        r5y = Math.random() * 465;
        
        r6x = Math.random() * 465;
        r6y = Math.random() * 465;
        
        r7x = Math.random() * 465;
        r7y = Math.random() * 465;
        
        r8x = Math.random() * 465;
        r8y = Math.random() * 465;
        
        r9x = Math.random() * 465;
        r9y = Math.random() * 465;
        
        this.next = next;
    }
}