In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: ある角度を中心として円状に物体を等間隔に配置するサンプル

ある角度を中心として円状に物体を等間隔に配置するサンプル。
さらにある角度をまわすことによってどうなるかを示すサンプル。

http://wonderfl.net/code/b829ae193bd6d43ab81e104624597449361240f2/

のサンプルになります。
フレームレートを弄ったりしてみるのも一興。
Get Adobe Flash player
by hacker_9p8x8mco 04 Aug 2009
    Embed
// forked from Hiiragi's ある角度を中心として円状に物体を等間隔に配置するサンプル
package  
{
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	
	/**
	 * ある角度を中心として円状に物体を等間隔に配置するサンプル。
	 * さらにある角度をまわすことによってどうなるかを示すサンプル。
	 * 
	 * http://wonderfl.net/code/b829ae193bd6d43ab81e104624597449361240f2/
	 * 
	 * のサンプルになります。
	 * フレームレートを弄ったりしてみるのも一興。
	 */
	
	[SWF(width = 465, height = 465, frameRate = 3, backgroundColor = 0xFFFFFF)]
	
	public class PutCircle extends Sprite
	{
		//ステージの中心点
		private var _cp_x:Number = stage.stageWidth / 2;
		private var _cp_y:Number = stage.stageHeight / 2;
		
		//真ん中の赤い円
		private var _centerCircle:Sprite = new Sprite();
		
		//周りの円を書くためのコンテナスプライト
		private var _drawSprite:Sprite = new Sprite();
		
		//砲台(緑色)の角度。
		private var _rotationRadian:Number = 0;
		
		//円の個数
		private var _circleNum:Number = 10;
		
		public function PutCircle() 
		{
			this.addChild(_drawSprite);
			
			//中央の円を配置
			_centerCircle.x = stage.stageWidth / 2;
			_centerCircle.y = stage.stageHeight / 2;
			
			_centerCircle.graphics.beginFill(0xFF0000);
			_centerCircle.graphics.drawCircle(0, 0, 10);
			_centerCircle.graphics.endFill();
			
			this.addChild(_centerCircle);
			
			//その周りに円を配置
			this.addEventListener(Event.ENTER_FRAME, drawCircleFunction);
		}
		
		private function drawCircleFunction(e:Event):void {
			_drawSprite.graphics.clear();
			
			for (var i:int = 0; i < _circleNum; i++) {
				var radius:Number = 10;
				var force:Number = 100;
				var radian:Number = Math.PI * 2 / _circleNum * i + _rotationRadian;
				var circleX:Number = _cp_x + force * Math.cos(radian);
				var circleY:Number = _cp_y + force * Math.sin(radian);
				
				var g:Graphics = _drawSprite.graphics; 
				if (i == 0) {
					g.beginFill(0x00FF00);
				} else {
					g.beginFill(0x0000FF);
				}
				
				g.drawCircle(circleX, circleY, radius);
				g.endFill();
				
			}
			
			//適当な角度でまわす
			_rotationRadian += 2.16;
		}
		
	}
	

	
}