Forked from: Murai's level0_CircleChainClock! diff:13 forked from: level0_CircleChainClock! とりあえずwonderfulの使い方試し中 tongari forked:1favorite:3lines:101license : MIT License modified : 2009-09-19 13:52:16 Embed Tweet // forked from Murai's level0_CircleChainClock! // forked from 9re's forked from: Steiner Chain version 1 // forked from paq's 超超超シンプル時計。 /* とりあえずwonderfulの使い方試し中 */ package { import flash.display.*; import flash.utils.*; import flash.events.*; import flash.text.*; import flash.geom.*; import flash.filters.*; /* @author Takashi Murai(KAYAC) */ [SWF(width="465",height="465",backgroundColor="0x000000",frameRate="60")]; public class CircleChainClock extends Sprite { private var font:Class; public var textField:TextField = new TextField(); public var date:Date; public var str:String = new String(); private var _scale:Number = 75; private var _cx:Number; private var _cy:Number; private var Canvas:Sprite=new Sprite(); private var Hs:Sprite=new Sprite(); private var Ms:Sprite=new Sprite(); private var Ss:Sprite=new Sprite(); private var MSs:Sprite=new Sprite(); private var _bmd:BitmapData; private static const P:Point = new Point(); private static const BLUR:BitmapFilter = new BlurFilter( 16, 16, 1 ); private static const ALPHA:ColorTransform= new ColorTransform( 255, 255, 255, 1, 0, 0, 0, 0 ); public function CircleChainClock() { _bmd= new BitmapData( 465, 465, true, 0xff000000 ); addChild( new Bitmap(_bmd ) ); var format:TextFormat = new TextFormat(); format.font = "_sans"; format.align="center"; format.size = 20; format.color = 0xffffff; // textField.defaultTextFormat = format; textField.text=" "; textField.x = 0; textField.y = 465/2-textField.textHeight/2; textField.width = 465; Hs.alpha=0.25; Ms.alpha=0.25; Ss.alpha=0.75; MSs.alpha=0.25 ; Canvas.addChild(Hs); Canvas.addChild(Ms); Canvas.addChild(Ss); Canvas.addChild(MSs); Canvas.addChild(textField); addChild(Canvas); addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function drawSteiner(n:int,sp:Sprite,nR:Number):void { sp.graphics.clear(); if(n<3)return //trace(sec) var r:Number = nR; var X:Number = new Date().hours/100; var Y:Number = 0; var t:Number = Math.PI / n; var rho:Number = r * Math.sin(t) / (1 - Math.sin(t)); t = 2 * t; var s:Number; _cx = stage.stageWidth / 2; _cy = stage.stageHeight / 2; for (var i:int = 0; i < n; ++i) { s = i * t + Math.PI / 2; sp.graphics.beginFill(0xffffff); draw(X + (r + rho) * Math.cos(s), Y + (r + rho) * Math.sin(s), rho,sp); sp.graphics.endFill(); } } public function draw(cx:Number, cy:Number, cr:Number, sp:Sprite):void { var c:Number = cx * cx + cy * cy - cr * cr; var rx:Number, ry:Number, rr:Number; rx = cx / c * _scale + _cx; ry = -cy / c * _scale + _cy; rr = cr / c * _scale; sp.graphics.drawCircle(rx, ry, rr); } private function glower():void { _bmd.applyFilter( _bmd, _bmd.rect, P, BLUR ); _bmd.colorTransform( _bmd.rect, ALPHA ); _bmd.draw( Canvas ); } private function onEnterFrame(e:Event):void { date = new Date(); str =""; str += (date.hours < 10 ? "0" : "") + date.hours; str += " "; str += (date.minutes < 10 ? "0" : "") + date.minutes; str += " "; str += (date.seconds < 10 ? "0" : "") + date.seconds; textField.text = str; glower(); drawSteiner(date.hours,Hs,1); drawSteiner(date.minutes,Ms,0.8); drawSteiner(date.seconds,Ss,0.5); drawSteiner(date.milliseconds/3,MSs,0.5); } } } Code Fullscreen Preview Fullscreen aobyrne bongiovi015 a440hlz : 時計 時計 hours seconds minutes BitmapDataChannel.ALPHA Date date text milliseconds addChild textHeight width ColorTransform TextFormat rect Math.sin drawCircle align colorTransform applyFilter defaultTextFormat sort new page view favorite forked pv210 forked from: forked from: leve.. naonao forked:0 favorite:0lines:101 (diff:1)