Particles

by bradsedito forked from キラキラ (diff: 51)
キラキラ
♥0 | Line 105 | Modified 2011-07-24 14:28:43 | 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/xAMM
 */

// forked from okoi's キラキラ
//
//    キラキラ
//
package 
{
    import flash.display.*;
    import flash.events.*;
    import com.greensock.*;
    import com.greensock.easing.*;
    import net.hires.debug.Stats;
    
    public class Main extends Sprite 
    {
         public static const    DEPTH:int   =  5000;
        private static const STAR_NUM:int   =  100; 
        private        var      stars:Array =  new Array();
        
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);    //     Entry
            
            var i:uint = 0;
            for ( i = 0; i < STAR_NUM; i++ )
            {
                var x:Number = Math.random() * stage.stageWidth;
                var y:Number = Math.random() * stage.stageHeight;
                var z:Number = Math.random() * DEPTH;
                stars.push( new Star(x, y, z) );
            }
            
            addEventListener( Event.ENTER_FRAME, EnterFrame );
        }
        
        private function EnterFrame(e:Event):void 
        {
            var i:uint = 0;
            for ( i = 0; i < STAR_NUM; i++ )
            {
                stars[i].Update(stage);
            }
            
            graphics.clear();
            graphics.beginFill( 0x000000 );
            graphics.drawRect( 0, 0, stage.stageWidth, stage.stageHeight );
            graphics.endFill();
            
            for ( i = 0; i < STAR_NUM; i++ )
            {
                var s:Star = stars[i];
                s.Draw(graphics);
            }
        }        
    }    
}

//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////

import flash.display.Graphics;
import flash.display.Stage;
class Star 
{
    public var posX:Number;
    public var posY:Number;
    public var posZ:Number;
    public var moveX:Number;
    public var moveY:Number;
    public var moveZ:Number;
    public var alpha:Number;
    public var step:int;
    public var steps:int;
    public var size:int;
    
    public function Star(_x:Number, _y:Number, _z:Number) 
    {
        Init(_x, _y, _z);  //  Init(_x, _y);
    }
    
    public function Init(_x:Number, _y:Number, _z:Number):void 
    {
        var angle:Number = Math.random() * 360;
        var speed:Number = Math.random() + 0.1;
        
        posX = _x;
        posY = _y;
        posZ = _z;
        
        moveX = Math.cos( angle * Math.PI / 180.0 ) * speed;
        moveY = Math.sin( angle * Math.PI / 180.0 ) * speed;
        moveZ = Math.sin(  step * Math.PI / 180.0 ) * speed; // (Math.sin( step * Math.PI / 180 ) + 1) / 2; 
        
        step  = int(Math.random() * 360);
        steps = int(Math.random() * 10) + 1;
         posZ = (Math.sin( step * Math.PI / 180 ) + 1);
     //alpha = (Math.sin( step * Math.PI / 180 ) + 1) / 2;
        
        size = 6;  //  Math.random()*1.5 + 1;
    }
    
    public    function Update(stage:Stage):void 
    {
        //alpha = (Math.sin( step * Math.PI / 180 ) + 1) / 2;    
        alpha = 1;            
        step = (step + steps) % 360;
        
        posX += moveX;
        posY += moveY;
        posZ += moveZ;
        
        if ( posX < 0 )    posX = stage.stageWidth;
        if ( posX > stage.stageWidth ) posX = 0;
        
        if ( posY < 0 ) posY = stage.stageHeight;
        if ( posY > stage.stageHeight ) posY = 0;
        
        if ( posZ < 0 )
                {    }; 
                //posZ = stage.stageHeight;
        if ( posZ > 0 )
                {    }; 
                //TweenMax.to((Math.sin( step * Math.PI / 180 ) + 1) / 2; 
                //TweenMax
                //posZ = 0;
    }
    
    public    function Draw(g:Graphics):void
    {
        g.beginFill( 0xFFFFFF, alpha );
        g.drawCircle( posX, posY, size );
        g.endFill();
    }
}