package {
import com.gs.TweenLite;
import flash.display.*;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.filters.BitmapFilterQuality;
import flash.filters.BlurFilter;
import flash.media.SoundChannel;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.Timer;
import mx.core.SoundAsset;
[SWF(width="400", height="400", backgroundColor="0x000000" )]
public class FullStars extends Sprite {
[Embed(source="assets/MyGodItsFullOfStars.mp3")]
public var fullStars:Class;
private var centerX:int = 200;
private var centerY:int = 200;
private var msg:TextField;
private var holder:Sprite;
public function FullStars() {
super();
holder = new Sprite();
holder.graphics.beginFill( 0x000000, 1.0 );
holder.graphics.drawRect( 0, 0, 400, 400 );
holder.buttonMode = true;
addChild( holder );
msg = new TextField();
msg.autoSize = "center";
msg.text = "Click here for A.C. Clark tribute";
var tfm:TextFormat = new TextFormat( "_sans", 22, 0xFFFFFF );
msg.setTextFormat( tfm );
msg.x = ( 400 - msg.width ) / 2;
msg.y = 180;
msg.selectable = false;
holder.addChild( msg );
holder.addEventListener(MouseEvent.CLICK, onClick );
}
private function onClick( e:MouseEvent ):void {
this.removeChild( holder );
var tic:Timer = new Timer( 50, 100 );
tic.addEventListener( TimerEvent.TIMER, onTic );
tic.start();
var fullStars:SoundAsset = new fullStars() as SoundAsset;
var sndChannel:SoundChannel = fullStars.play();
}
private function onTic( e:TimerEvent ):void {
makeStar();
}
private function makeStar():void {
var s:Sprite = new Sprite();
s.graphics.beginFill( 0xFFFFFF, 1.0 );
var angle:Number = rndRangeNum( 0, 2 * Math.PI );
var radius:Number = rndRangeNum( 1, 10 );
if( rndRangeInt( 0, 1 ) == 1 ) { if( rndRangeInt( 0, 1 ) == 1 ) {
s.graphics.drawCircle( rndRangeNum( 0, 400 ), 0, radius ); } else {
s.graphics.drawCircle( rndRangeNum( 0, 400 ), 400, radius ); }
} else {
if( rndRangeInt( 0, 1 ) == 1 ) {
s.graphics.drawCircle( 0, rndRangeNum( 0, 400 ), radius ); } else {
s.graphics.drawCircle( 400, rndRangeNum( 0, 400 ), radius ); }
}
var blurAmount:int = rndRangeNum( 3, 10 );
var filtersArray:Array = new Array();
var blur:BlurFilter = new BlurFilter( blurAmount, blurAmount, BitmapFilterQuality.HIGH );
filtersArray.push( blur );
s.filters = filtersArray;
addChild( s );
var rndTime:int = rndRangeInt( 0.3, 1.5 );
var alphaTo:Number = rndRangeNum( 0, .4 );
TweenLite.to( s, rndTime, { alpha:alphaTo, x:centerX, y:centerY, scaleX:0, scaleY:0, onComplete:onDeathStar } );
}
private function onDeathStar():void {
makeStar();
}
public function rndRangeNum( low:Number, high:Number ):Number {
var dif:Number = high - low;
var rnd:Number = ( Math.random() * dif ) + low;
return rnd;
}
public function rndRangeInt( low:int, high:int ):int {
var dif:int = high - low + 1;
var rnd:int = Math.floor( Math.random() * dif ) + low;
return rnd;
}
}
}