/**
* Copyright uwi ( http://wonderfl.net/user/uwi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/mPI8
*/
package {
import flash.display.*;
import flash.events.*;
[SWF(framerate="60")]
public class FlashTest extends Sprite {
private var _sec : Sprite;
private var _min : Sprite;
private var _hour : Shape;
private var _cent : Sprite;
public function FlashTest() {
_cent = new Sprite();
addChild(_cent);
_cent.x = 465 / 2;
_cent.y = 465 / 2;
var r : Number = 240;
var rate : Number = 0.4;
var g : Graphics = _cent.graphics;
g.lineStyle(4, 0x990000);
g.drawCircle(0, 0, r);
_sec = new Sprite();
_cent.addChild(_sec);
var rw : Number;
var gs : Graphics = _sec.graphics;
gs.lineStyle(4, 0x990000);
drawWakame(gs, 0, r * 0.45, r * 0.06, r * 0.45, 35, 4.5, 0, r * 0.45);
gs.lineStyle(2, 0x009900);
gs.drawCircle(0, r * (1 + rate), r * rate);
_min = new Sprite();
_sec.addChild(_min);
_min.x = 0;
_min.y = r * (1 + rate);
r *= rate;
var gm : Graphics = _min.graphics;
gm.lineStyle(2, 0x009900);
drawWakame(gm, 0, r * 0.45, r * 0.06, r * 0.45, 35, 4, 0, r * 0.45);
gm.lineStyle(1, 0x000099);
gm.drawCircle(0, r * (1 + rate), r * rate);
_hour = new Shape();
_min.addChild(_hour);
_hour.x = 0;
_hour.y = r * (1 + rate);
r *= rate;
var gh : Graphics = _hour.graphics;
gh.lineStyle(1, 0x000099);
drawWakame(gh, 0, r * 0.45, r * 0.06, r * 0.45, 35, 10, 0, r * 0.45);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e : Event) : void
{
var d : Date = new Date();
var sec : Number = d.seconds + d.milliseconds / 1000;
var min : Number = d.minutes + sec / 60;
var hour : Number = d.hours + min / 60;
_sec.rotation = sec * 6 - 180;
_min.rotation = min * 6 - 180;
_hour.rotation = hour * 30 - 180;
_cent.x = 465 / 2 + Math.sin((sec * 6 - 180) * Math.PI / 180) * 240;
_cent.y = 465 / 2 - Math.cos((sec * 6 - 180) * Math.PI / 180) * 240;
}
private static function drawWakame(g : Graphics, basex : Number, basey : Number, rx : Number, ry : Number, frac : Number, n : int, offsetx : Number, offsety : Number) : void
{
var theta : Number = frac * Math.PI / 180;
var c2 : Number = Math.cos(theta) * Math.cos(theta);
var cs : Number = Math.cos(theta) * Math.sin(theta);
g.moveTo(basex + offsetx, basey + offsety);
var fromx : Number = basex;
var fromy : Number = basey;
var b : Boolean = true;
for(var t : Number = 0;t <= 360;t+=360/n){
var tox : Number = -rx * Math.sin(t * Math.PI / 180);
var toy : Number = ry * Math.cos(t * Math.PI / 180);
var ancx : Number = c2 * (tox - fromx) + (b ? cs : -cs) * (toy - fromy) + fromx;
var ancy : Number = (b ? -cs : cs) * (tox - fromx) + c2 * (toy - fromy) + fromy;
g.curveTo(ancx + offsetx, ancy + offsety, tox + offsetx, toy + offsety);
fromx = tox;
fromy = toy;
b = !b;
}
}
}
}