forked from: Draw circles with lights :D
-----------------------------------
------------ IMPORTS --------------
----------------------------------- import flash.display.Bitmap;
/**
* Copyright Brendyn.Zachary ( http://wonderfl.net/user/Brendyn.Zachary )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/zDNM
*/
package {
// -----------------------------------
// ------------ IMPORTS --------------
// ----------------------------------- import flash.display.Bitmap;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Point;
public class DrawLight extends Sprite {
// -----------------------------------
// ----------- CONSTANTS -------------
// -----------------------------------
private static const CIRCLE_STAGE_WIDTH : Number = 1000;
private static const CIRCLE_STAGE_HEIGHT : Number = 700;
// -----------------------------------
// ----- VARIABLE DECLARATIONS -------
// -----------------------------------
private var _container : Bitmap;
private var _centerX : Number;
private var _centerY : Number;
private var _radius : Number;
private var _angle : Number;
private var _degree : Number;
private var _speed : Number;
private var _ranNum :Number;
private var _circleBMD:BitmapData;
private var _newX:Number;
private var _newY:Number;
private var _circleSize:Number;
// -----------------------------------
// ----------- METHODS ---------------
// -----------------------------------
public function DrawLight() {
init();
}
/**
* @private
*/
private function init():void{
prepareStage();
startNewCircle();
addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
/**
* @private
*/
private function prepareStage() : void {
var stage:Sprite = new Sprite();
stage.graphics.beginFill(0x000000);
stage.graphics.drawRect(0, 0, CIRCLE_STAGE_WIDTH, CIRCLE_STAGE_HEIGHT);
stage.graphics.endFill();
addChild(stage);
_circleBMD = new BitmapData(CIRCLE_STAGE_WIDTH, CIRCLE_STAGE_HEIGHT, true, 0x000000);
_container = new Bitmap(_circleBMD);
addChild(_container);
}
/**
* @private
* Reset the variables to start in a new location
*/
private function startNewCircle():void {
_centerY = Math.random() * CIRCLE_STAGE_HEIGHT;
_centerX = Math.random() * CIRCLE_STAGE_WIDTH;
_ranNum = Math.random() + 0.4;
_circleSize = Math.random() + 20;
_radius = _ranNum * CIRCLE_STAGE_WIDTH/4;
_speed = _ranNum * 9;
_degree = 0;
}
/**
* @private
* Blur the bitmap data on each ENTER_FRAME, and create a new dot
*/
private function enterFrameHandler($evt:Event):void {
createDot();
calculateDotPosition();
_circleBMD.applyFilter(_circleBMD, _circleBMD.rect, new Point(0,0), new BlurFilter(10,10,1));
// _circleBMD.scroll(0, -8);
}
/**
* @private
*/
private function createDot():void{
var dotSprite:Sprite = new Sprite();
dotSprite.graphics.beginFill(0xFFFF99);
dotSprite.graphics.drawCircle(0, 0, _circleSize);
dotSprite.graphics.endFill();
var m:Matrix = dotSprite.transform.matrix;
m.tx = _newX;
m.ty = _newY;
_circleBMD.draw(dotSprite, m);
}
/**
* @private
*/
private function calculateDotPosition():void{
_angle = _degree * (Math.PI / 180);
_degree = _degree + _speed;
_newX = _radius * Math.cos(_angle) + _centerX;
_newY = _radius * Math.sin(_angle) + _centerY;
if (_degree >360) startNewCircle();
}
}
}