forked from: forked from: Sludge

by bradsedito forked from forked from: Sludge (diff: 103)
勢いのみで、全然最適化してないです(所々やや重い)
@author ue
♥0 | Line 72 | Modified 2010-11-02 09:38:42 | MIT License
play

ActionScript3 source code

/**
 * Copyright bradsedito ( http://wonderfl.net/user/bradsedito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/s9pZ
 */

// forked from kkstudio2007's forked from: Sludge
// forked from _ueueueueue's Sludge
package 
{
    import flash.display.*;
    import flash.events.*;
    import flash.filters.BlurFilter;
    import flash.geom.*;
    import flash.text.*;
    import flash.ui.*;
    import flash.display.BlendMode;
    
    [SWF(backgroundColor=0xFFFFFF)]
     
public class Main extends Sprite 
{
   private const NUM:int = 6;
         
private var container:Sprite;
private var balls:Vector.<Ball>;
private var divide:Number = 1200;
        
public function Main():void 
{
        container = new Sprite();
        container.x = stage.stageWidth / 2;
        container.y = stage.stageHeight / 2;
        container.z = 0;
        addChild(container);
          
        balls = new Vector.<Ball>(NUM, true);
        for (var i:int = 0; i < NUM; i++) 
        {
                 var ball:Ball = new Ball();
                 ball.x = Math.random() * 120 - 60;
                 ball.y = Math.random() * 120 - 60;
                 ball.z = Math.random() * 120 - 60;
                 ball.vx = Math.random() * 2 - 1;
                 ball.vy = Math.random() * 2 - 1;
                 //ball.vz = Math.random() * 4 - 2;
                 ball.blendMode = BlendMode.HARDLIGHT;
                 ball.filters = [new BlurFilter(10,10)];
                 container.addChild(ball);
                 balls[i] = ball;
            }
            addEventListener(Event.ENTER_FRAME, update);
            
            
      }
        
private function update(e:Event):void 
{           
//  balls.sort(depth);
    for (var i:int = 0; i < NUM; i++) 
        {
            var ball:Ball = balls[i];
//          container.addChildAt(ball, i);
                
                var dx:Number = 0 - ball.x;
                var dy:Number = 0 - ball.y;
                var dist:Number = Math.sqrt(dx * dx + dy * dy);
                
//////          event.target.blendMode = BlendMode.SUBTRACT;
//////          ball.blendMode = BlendMode.SUBTRACT;
                    
                if (ball.x > 0) ball.vx -= dist / divide;
                    else ball.vx += dist / divide;
                if (ball.y > 0) ball.vy -= dist / divide;
                    else ball.vy += dist / divide;
//              if (ball.z > 0) ball.vz -= dist / divide;
//                  else ball.vz += dist / divide;
                
                ball.x += ball.vx;
                ball.y += ball.vy;
//              ball.z += ball.vz;
          }
      }
        
        //private function depth(a:Ball, b:Ball):int
        //{
            //var aPos:Vector3D =  a.transform.matrix3D.position;
            //aPos = container.transform.matrix3D.deltaTransformVector(aPos);
            //var bPos:Vector3D =  b.transform.matrix3D.position;
            //bPos = container.transform.matrix3D.deltaTransformVector(bPos);
            //return bPos.z - aPos.z;
        //}
    }
}




    import flash.display.Sprite;
    import flash.display.Stage;

class Ball extends Sprite
{
    public var vx:Number;
    public var vy:Number;
    public var vz:Number;
    public function Ball()
    {
        var element:uint = Math.random() * 128 + 50; 
        graphics.beginFill(element << 16 | element << 8 | element);
        graphics.drawCircle(0, 0, Math.random() * 200 + 10);
        graphics.endFill();
    }
}