forked from: forked from: へんなとけい

by undo forked from forked from: へんなとけい (diff: 46)
♥2 | Line 86 | Modified 2009-07-22 22:35:12 | MIT License
play

ActionScript3 source code

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

// forked from uwi's forked from: へんなとけい
// forked from undo's へんなとけい
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	public class FlashTest extends Sprite
	{

		private var yer:Sprite = new Sprite();
		private var mon:Sprite = new Sprite();
		private var day:Sprite = new Sprite();
		private var hor:Sprite = new Sprite();
		private var min:Sprite = new Sprite();
		private var sec:Sprite = new Sprite();
		private var msec:Sprite = new Sprite();
		private var yerLength:Number = 20;
		private var monLength:Number = 40;
		private var dayLength:Number = 60;
		private var horLength:Number = 80;
		private var minLength:Number = 100;
		private var secLength:Number = 120;
		private var msecLength:Number = 140;
		public function FlashTest()
		{
			// write as3 code here..
			// 短針の先に長針が付いてて、長針の先に秒針がついてる
			// へんな時計

                        //ミリ針などなまぬるい
                        //年月日も追加じゃー

			//graphics.lineStyle(3,0xcccccc);
			//graphics.drawCircle(stage.stageWidth/2, stage.stageHeight/2, Math.min(stage.stageWidth, stage.stageHeight)/2-50);

			addChild(yer);
			addChild(mon);
			addChild(day);
			addChild(hor);
			addChild(min);
			addChild(sec);
			addChild(msec);

			yer.graphics.beginFill(0);
			yer.graphics.drawRect(-10,10,20,-yerLength-20);
			yer.graphics.endFill();
			mon.graphics.beginFill(0x222222);
			mon.graphics.drawRect(-9,9,18,-monLength-18);
			mon.graphics.endFill();
			day.graphics.beginFill(0x444444);
			day.graphics.drawRect(-8,8,16,-dayLength-16);
			day.graphics.endFill();
			hor.graphics.beginFill(0x666666);
			hor.graphics.drawRect(-7,7,14,-horLength-14);
			hor.graphics.endFill();
			min.graphics.beginFill(0x888888);
			min.graphics.drawRect(-6,6,12,-minLength-12);
			min.graphics.endFill();
			sec.graphics.beginFill(0xaaaaaa);
			sec.graphics.drawRect(-4,30,8,-secLength-30);
			sec.graphics.endFill();
			msec.graphics.beginFill(0xcccccc);
			msec.graphics.drawRect(-4,30,8,-msecLength-30);
			msec.graphics.endFill();

			yer.x = stage.stageWidth/2;
			yer.y = stage.stageHeight/2;

			addEventListener(Event.ENTER_FRAME, onEnter);
		}

		private function onEnter(evt:Event):void
		{
			var date:Date = new Date();
			var yr:Number = date.getFullYear();
			var mn:Number = date.getMonth();
			var d:Number = date.getDate();
			var h:Number = date.getHours();
			var m:Number = date.getMinutes();
			var s:Number = date.getSeconds();
			var ms:Number = date.getMilliseconds();

			yer.rotation = 360*(yr%1000 -1 + mn/12)/1000;

			mon.x = yer.x + Math.sin(Math.PI*yer.rotation/180)*yerLength;
			mon.y = yer.y - Math.cos(Math.PI*yer.rotation/180)*yerLength;
			mon.rotation = 360*(mn+d/30)/12;

			day.x = mon.x + Math.sin(Math.PI*mon.rotation/180)*monLength;
			day.y = mon.y - Math.cos(Math.PI*mon.rotation/180)*monLength;
			day.rotation = 360*(d+h/24)/30;

			hor.x = day.x + Math.sin(Math.PI*day.rotation/180)*dayLength;
			hor.y = day.y - Math.cos(Math.PI*day.rotation/180)*dayLength;
			hor.rotation = 360*(h+m/60)/12;

			min.x = hor.x + Math.sin(Math.PI*hor.rotation/180)*horLength;
			min.y = hor.y - Math.cos(Math.PI*hor.rotation/180)*horLength;
			min.rotation = 360*(m+s/60)/60;

			sec.x = min.x + Math.sin(Math.PI*min.rotation/180)*minLength;
			sec.y = min.y - Math.cos(Math.PI*min.rotation/180)*minLength;
			sec.rotation = 360*(s + date.getMilliseconds()/1000)/60;

			msec.x = sec.x + Math.sin(Math.PI*sec.rotation/180)*secLength;
			msec.y = sec.y - Math.cos(Math.PI*sec.rotation/180)*secLength;
			msec.rotation = 360*(ms)/1000;
		}
	}
}