forked from: Star Exposure

by megumilk.1214 forked from Star Exposure (diff: 1)
♥0 | Line 50 | Modified 2012-04-22 23:50:39 | MIT License
play

ActionScript3 source code

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

// forked from butchi's Star Exposure
package
{
    import flash.display.Sprite;
    import flash.events.Event;

    [SWF(backgroundColor ="#000000", width = "465", height = "465", frameRate = "30")]
    public class Main extends Sprite
    {
        private var stageWidth:Number = 465;
        private var stageHeight:Number = 465;
        private var rot:Number = 0; // 回転の角度(rad)
        private var star:Vector.<Sprite>; // 星のSprite
        private var rad:Vector.<Number>; // 星の中心からの距離
        private var theta:Vector.<Number>; // 星の初期角度(rad)
        private var size:Vector.<Number>; // 星の大きさ
        private var color:Vector.<uint>; // 星の色
        private var starNum:int = 500; // 星の個数
        public function Main()
        {
            var bg:Sprite = new Sprite(); // メタデータタグでなぜか背景色を変えられなかったので黒の矩形を描画
            bg.graphics.beginFill(0x000000);
            bg.graphics.drawRect(0,0,stageWidth,stageHeight);
            addChild(bg);
            
            star = new Vector.<Sprite>(starNum);
            size = new Vector.<Number>(starNum);
            rad = new Vector.<Number>(starNum);
            color = new Vector.<uint>(starNum);
            theta = new Vector.<Number>(starNum);
            for (var i_counter:uint=0; i_counter<starNum; i_counter++) {
                star[i_counter] = new Sprite();
                star[i_counter].x = stageWidth / 2;
                star[i_counter].y = stageHeight / 2;
                size[i_counter] = 2*Math.random();
                color[i_counter] = 0xFFFFFF - ((96 * Math.random())<<16) - ((96 * Math.random())<<8) - (96 * Math.random()); // 少し明るめのランダム色
                rad[i_counter] = stageWidth*1.5/2*Math.random();
                theta[i_counter] = 2*Math.PI*Math.random();
                //star[i_counter].graphics.lineStyle(0);
                //star[i_counter].graphics.beginFill(color[i_counter]);
                //star[i_counter].graphics.drawCircle(rad[i_counter]*Math.cos(rot-theta[i_counter]),rad[i_counter]*Math.sin(rot-theta[i_counter]), size[i_counter]/2);
                //star[i_counter].graphics.endFill();
                star[i_counter].graphics.lineStyle(size[i_counter],color[i_counter]);
                star[i_counter].graphics.moveTo(rad[i_counter]*Math.cos(rot-theta[i_counter]),rad[i_counter]*Math.sin(rot-theta[i_counter]));
                addChild(star[i_counter]);
            }
            addEventListener(Event.ENTER_FRAME, draw);
        }
        public function draw(evt:Event):void {
            for (var i_counter:uint=0; i_counter<starNum; i_counter++) {
                star[i_counter].graphics.lineTo(rad[i_counter]*Math.cos(rot-theta[i_counter]),rad[i_counter]*Math.sin(rot-theta[i_counter]));
            }
            rot += 0.0001;
            return;
        }
    }
}