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