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

forked from: starfield

元ネタ=http://www.chromeexperiments.com/detail/starfield/
Get Adobe Flash player
by bradsedito 29 Sep 2011
// forked from termat's starfield
/*
  元ネタ=http://www.chromeexperiments.com/detail/starfield/
*/
package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;

    [SWF(width = "480", height = "480", backgroundColor = "0x000000", fps = "60")] 
    public class Practice70 extends Sprite{
        private var stars:Array;
        private var n:int = 512;
        private var test:Boolean;
        
        public function Practice70() {
            stars = new Array();
            stage.scaleMode = "showAll";
            for (var i:int = 0; i < n; i++) {
                var xx:Number = Star.width * Math.random()*2 - Star.cx*2;
                var yy:Number = Star.height * Math.random()*2 - Star.cy*2;
                var zz:Number = Math.round(Math.random() * Star.cz);
                stars.push(new Star(xx, yy, zz));
            }
            addEventListener(Event.ENTER_FRAME, update);
        }
        
        private function update(e:Event):void {
            var mx:Number = mouseX - Star.cx;
            var my:Number = mouseY - Star.cy;
            graphics.clear();                
            for (var i:int = 0; i < stars.length; i++) stars[i].update(graphics, mx, my);
        }
    }
}
import flash.display.Graphics;
class Star {
    public static var speed:Number = 4;
    public static var width:Number = 480;
    public static var height:Number = 480;
    public static var ratio:Number = 256;
    public static var cx:Number = width / 2;
    public static var cy:Number = height / 2;
    public static var cz:Number = (width + height) / 2;
    public static var color:Number = 1 / cz;
    private var x:Number;
    private var y:Number;
    private var z:Number;
    private var px:Number;
    private var py:Number;
    private var test:Boolean;
    
    public function Star(_x:Number, _y:Number, _z:Number):void {
        x = _x; y = _y; z = _z;
        px = 0; py = 0;
    }
    
    public function update(g:Graphics, mx:Number, my:Number):void {
        test = true;
        var x_save:Number = px;
        var y_save:Number = py;
        x += mx / 16;
        if (x > cx*2) { x -= width *2; test = false; }
        if (x < -cx*2) { x += width *2; test = false; }
        y += my /16;
        if (y > cy *2) { y -= height *2; test = false; }
        if (y < -cy *2) { y += height *2; test = false; }
        z -= speed;
        if (z > cz) { z -= cz; test = false; }
        if (z < 0) { z += cz; test = false; }
        px = cx + (x / z) * ratio;
        py = cy + (y / z) * ratio;
        if (x_save > 0 && x_save < width && y_save > 0 && y_save < height && test) {
            g.lineStyle((1 - color * z) * 2, 0xffffff);
            g.moveTo(x_save, y_save);
            g.lineTo(px, py);
        }
    }
}