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

Maxwell's demon?

開閉したりしようかと思ったけどめんどくさくなったので放棄
Get Adobe Flash player
by Susisu 23 Apr 2011
    Embed
package {
    import flash.geom.Rectangle;
    import flash.events.Event;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Graphics;
    import flash.display.Sprite;
    [SWF(width="512",height="512",frameRate="60",backgroundColor="0x000000")]
    public class FlashTest extends Sprite {
        private var first:Particle;
        private var bmd:BitmapData;
        private var bmp:Bitmap;
        private var rect:Rectangle;
        public function FlashTest() {
            var g:Graphics=graphics;
            g.lineStyle(1,0xffffff);
            g.drawRect(0,0,256,256);
            g.moveTo(128,0);
            g.lineTo(128,120);
            g.moveTo(128,136);
            g.lineTo(128,256);
            g.lineStyle(10,0xffffff);
            g.moveTo(128,120);
            g.lineTo(128,136);
            var t:Number=Math.random()*2*Math.PI;
            var s:Number=Math.random()*3.9+0.1;
            first=new Particle(Math.random()*256<<0,Math.random()*256<<0,Math.cos(t)*s,Math.sin(t)*s);
            var prev:Particle=first;
            for(var i:int=1;i<10000;i++){
                t=Math.random()*2*Math.PI;
                s=Math.random()*3.9+0.1;
                var next:Particle=new Particle(Math.random()*256<<0,Math.random()*256<<0,Math.cos(t)*s,Math.sin(t)*s);
                prev.next=next;
                prev=next;
            }
            bmd=new BitmapData(256,256,true,0);
            bmp=new Bitmap(bmd);
            rect=bmd.rect;
            addChild(bmp);
            addEventListener(Event.ENTER_FRAME,onEnterFrame);
        }
        private function onEnterFrame(e:Event):void{
            var p:Particle=first;
            bmd.lock();
            bmd.fillRect(rect,0);
            var d:Number;
            while(p){
                d=p.x;
                var x:Number=p.x+=p.vx;
                var y:Number=p.y+=p.vy;
                if((d<128&&x>128)||(d>128&&x<128)){
                    if(!(Math.abs(y-128)<16&&((p.vx>0&&p.t>4)||(p.vx<0&&p.t<=4)))){
                        p.vx*=-1;
                        x=p.x+=p.vx;
                    }
                }
                if(x<0||x>=256)p.vx*=-1;
                if(y<0||y>=256)p.vy*=-1;
                bmd.setPixel32(x,y,p.c);
                p=p.next;
            }
            bmd.unlock();
        }

    }
}
class Particle{
    public var next:Particle;
    public var x:Number;
    public var y:Number;
    public var vx:Number;
    public var vy:Number;
    public var t:Number;
    public var c:uint;
    public function Particle(x:Number,y:Number,vx:Number,vy:Number){
        this.x=x;
        this.y=y;
        this.vx=vx;
        this.vy=vy;
        next=null;
        t=vx*vx+vy*vy;
        var r:Number=t*16>>0;
        var b:Number=256-r;
        c=0xff000000|((r>255?255:r)<<16)|(b>255?255:b);
    }
}