- 2008年11月 5日 16:39
- flash
作ってみました。
数字をいじるといろんな幾何学模様が書けます。
仕組み的には、circle×circleです。
意外とはまってしまう。。。
構造はシンプルです。curveToで作るとまた違う世界があるかもなぁ。
AS3.0は勉強中。まだ美しいコードが書けません。
必要なものはステージに置いてくださいね。
import flash.geom.*;
import flash.events.*;
import flash.display.*;
//initial
var radiusArr:Array = new Array();
var speedArr:Array = new Array();
var targetArr:Array = new Array();
var ballArr:Array = new Array(ball01,ball02);
var lineGraphics = new Shape();
var moveFlag:Boolean = false;
startBtn.addEventListener(MouseEvent.CLICK,onClickHdl);
function onClickHdl(event:MouseEvent){
if(!moveFlag){
radiusArr = [Number(txRadius01.text),Number(txRadius02.text)];
speedArr = [Number(txSpeed01.text),Number(txSpeed02.text)];
targetArr = [cMc,ball01];
lineGraphics.graphics.clear();
lineGraphics.graphics.lineStyle(1,0x111111);
moveFlag = true;
init();
}else{
stage.removeEventListener(Event.ENTER_FRAME,onEnterFrameHdl);
moveFlag = false;
}
}
function init(){
//obj init
for(var i:int = 0;i
ball.degree = 0;
ball.radius = radiusArr[i];
ball.speed = speedArr[i];
ball.targetmc = targetArr[i];
ball.rad = 0;
setPos(ball)
}
//start
lineGraphics.graphics.moveTo(ball02.x,ball02.y);
this.addChild(lineGraphics);
stage.addEventListener(Event.ENTER_FRAME,onEnterFrameHdl);
}
function onEnterFrameHdl(event:Event):void{
for(var i:int = 0;i
ball.degree += ball.speed;
setPos(ballArr[i]);
}
lineGraphics.graphics.lineTo(ball02.x,ball02.y);
}
function setPos(mc:MovieClip):void{
mc.rad = mc.degree * Math.PI/180;
mc.x = mc.targetmc.x + Math.cos(mc.rad) * mc.radius;
mc.y = mc.targetmc.y + Math.sin(mc.rad) * mc.radius;
}



