--- Revision None +++ Revision 663033316431 @@ -0,0 +1,80 @@ +var radius: Number = 150; +var angle: Number = 0; +var totalNumbers: Number = 8; +var nx: Number; +var ny: Number; + +// +stage.scaleMode = StageScaleMode.NO_SCALE; +stage.align = StageAlign.TOP_LEFT; + +var bg: Sprite = new Sprite(); +bg.graphics.beginFill( 0xCCCCCC, 1 ); +bg.graphics.drawRect( 0, 0, radius * 2, radius * 2 ); +bg.graphics.endFill(); +addChild(bg); + +var circle: Sprite = new Sprite(); +circle.graphics.lineStyle( 4, 0xFFFFFF, 1, true, "normal", CapsStyle.SQUARE, null, 3); +circle.graphics.beginFill( 0x888888, 1 ); +circle.graphics.drawCircle( radius, radius, radius); +circle.graphics.endFill(); +addChild(circle); + +var holder: Sprite = new Sprite(); +holder.graphics.beginFill( 0xFF0000, 0 ); +holder.graphics.drawRect( 0, 0, radius * 2, radius * 2 ); +holder.graphics.endFill(); +addChild(holder); + + +bg.x = Math.round((stage.stageWidth - bg.width) / 2); +bg.y = Math.round((stage.stageHeight - bg.height) / 2); + +circle.x = Math.round((stage.stageWidth - circle.width) / 2); +circle.y = Math.round((stage.stageHeight - circle.height) / 2); + +// +var c: Number = 0xFF0000; +for ( var i: Number=0; i < totalNumbers; i++ ) { + var b: Sprite = new Sprite(); + if ( i > 0 && i < totalNumbers - 1) c = 0xFF0000; + if ( i == totalNumbers - 1 ) c = 0x0000FF; + b.graphics.beginFill( c, 1 ); + b.graphics.drawRect( 0, 0, 45, 50 ); + b.graphics.endFill(); + + // start in the middle of the top part of the circle with drawing blocks + // first one is green, last one is blue + angle = 180 - ( 360 / totalNumbers ) * i; + nx = Math.sin( Math.PI / 180 * angle ) * ( ( radius - 4 ) + b.height ); + ny = Math.cos( Math.PI / 180 * angle ) * ( ( radius - 4 ) + b.height ); + + // reposition the current block + b.rotation = ( 180 - angle ); + b.x = ( nx + ( radius ) ); + b.y = ( ny + ( radius ) ) ; + holder.addChild(b); + trace("angle=" + angle ); +} + +holder.x = bg.x; +holder.y = bg.y; + +var origin: Point = new Point( holder.x, holder.y ); +var p: Point = new Point( origin.x + radius, origin.y + radius ); + +var d: Number = 0; +this.addEventListener(Event.ENTER_FRAME, +function(e:Event):void { + rotate(holder, 2, p ); +}); + +// rotates target based on the given origin +function rotate(target:DisplayObject, angle:Number, op:Point) { + var matrix: Matrix = target.transform.matrix; + matrix.translate( -op.x, -op.y ); + matrix.rotate( angle * ( Math.PI/180 ) ); + matrix.translate( op.x, op.y ); + target.transform.matrix = matrix; + }