forked from: 8 figured ring

by milchreis forked from 8 figured ring (diff: 52)
♥0 | Line 46 | Modified 2012-09-05 06:29:29 | MIT License
play

ActionScript3 source code

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

// forked from freddy's 8 figured ring
package 
{
    import flash.events.Event;
    import flash.display.Sprite;
    
    public class FlashTest extends Sprite 
    {
        public function FlashTest() 
        {
            // write as3 code here..
            
            
            addChild(create8(stage.stageWidth/2, stage.stageHeight/2, 200, .01, 90, 0, 5));
        }
        
        private function create8(x:int, y:int, r:int, speed:Number, angle:Number, phase:Number, n:uint = 0):Sprite 
        {
            var sp:Sprite = new Eight(r, speed, angle, phase);
            sp.x = x;
            sp.y = y;
            
            if (--n > 0)
            {
                sp.addChild(create8( r, 0, r/2, speed * 1.5, angle, phase* (Math.random() - .5), n)).rotation = 90;
                sp.addChild(create8(-r, 0, r/2, speed , angle * 2, phase* (Math.random() - .5), n)).rotation = 90;            
            }
            return sp;
        }
    }
}
import flash.display.Sprite;
import flash.events.Event;

internal class Eight extends Sprite
{
    private var _t:Number = 0, _speed:Number, _angle:Number, _phase:Number;
    
    public function Eight(r:Number, speed:Number, angle:Number, phase:Number)
    {
        graphics.lineStyle(6);
        graphics.drawCircle( r, 0, r);
        graphics.drawCircle(-r, 0, r);
        
        _speed = speed;
        _angle = angle;
        _phase = phase;
        
        addEventListener(Event.ENTER_FRAME, loop)
    }
    
    private function loop(e:Event):void 
    {
        rotation = Math.cos(_phase + _t * 2 * Math.PI) * _angle;
        _t += _speed;
                         
    }

}

var trace:Function = Wonderfl.log;