|
-
Senior Member
A lot of my sample code, including 'clumping' and 'wheel of trinkets' include sample functions for drawing circles using parameters x, y and radius.
If your outer circle has center ox,oy and radius oRad, then your inner circles need to be within that.
If an inner circle has center ix,iy and radius iRad, then distance of the center of the inner circle from the center of the outer circle is given by
dist = Math.sqrt(Math.pow(ox-ix,2) + Math.pow(oy-iy,2));
This distance should not allowed to exceed (oRad - iRad).
Here is a script that draws two circles which randomly move within an outer circle.
I'll add some comments later when I have more time...
code:
SW = Stage.width;
SH = Stage.height;
kRadiansToDegrees = 180/Math.PI;
kDegreesToRadians = Math.PI/180;
MovieClip.prototype.drawCircle = function(x,y,radius)
{
var r = radius;
var theta = 45*kDegreesToRadians;
var cr = radius/Math.cos(theta/2);
var angle = 0;
var cangle = -theta/2;
this.moveTo(x+r, y);
for (var i=0;i < 8;i++)
{
angle += theta;
cangle += theta;
var endX = r*Math.cos (angle);
var endY = r*Math.sin (angle);
var cX = cr*Math.cos (cangle);
var cY = cr*Math.sin (cangle);
this.curveTo(x+cX,y+cY, x+endX,y+endY);
}
}
moveCircle = function()
{
var dx = this.tx - this._x;
var dy = this.ty - this._y;
if (Math.abs(dx) < 1 && Math.abs(dy) < 1)
{
var range = Math.random()*(outer_mc.rad - this.rad);
var a = Math.random()*2*Math.PI;
this.tx = SW/2 + Math.cos(a) * range;
this.ty = SH/2 + Math.sin(a) * range;
}
else {
this._x += dx/5;
this._y += dy/5;
}
}
_root.createEmptyMovieClip("outer_mc", 1);
_root.createEmptyMovieClip("inner_mc1", 2);
_root.createEmptyMovieClip("inner_mc2", 3);
outer_mc._x = SW/2;
outer_mc._y = SH/2;
outer_mc.rad = 300;
outer_mc.clear();
outer_mc.lineStyle(2, 0xFF0000, 100);
outer_mc.drawCircle(0,0,outer_mc.rad);
inner_mc1._x = inner_mc1.tx = W/2;
inner_mc1._y = inner_mc1.ty = SH/2;
inner_mc1.rad = 50;
inner_mc1.clear();
inner_mc1.tx =
inner_mc1.lineStyle(2, 0x00FF00, 100);
inner_mc1.drawCircle(0,0,inner_mc1.rad);
inner_mc1.onEnterFrame = moveCircle;
inner_mc2._x = inner_mc2.tx = SW/2;
inner_mc2._y = inner_mc2.ty = SH/2;
inner_mc2.rad = 64;
inner_mc2.clear();
inner_mc2.lineStyle(2, 0x0000FF, 100);
inner_mc2.drawCircle(0,0,inner_mc2.rad);
inner_mc2.onEnterFrame = moveCircle;
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|