forked from: ある角度を中心として円状に物体を等間隔に配置するサンプル
ある角度を中心として円状に物体を等間隔に配置するサンプル。
さらにある角度をまわすことによってどうなるかを示すサンプル。
http://wonderfl.net/code/b829ae193bd6d43ab81e104624597449361240f2/
のサンプルになります。
フレームレートを弄ったりしてみるのも一興。
// 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;
}
}
}