Dynamisch Objekt im Radius anordnen

Hallo liebe Leut.

Ich hätte da mal ne Frage: Kann mir jemand einen Ansatz verraten wie ich über eine dynamische XML-Datei Movieclips um ein zentriertes Objekt automatisch in einem gewissen Radius anordne?

Das mit der XML-Datei und dem parsen bekomme ich hin... aber wenn ich jetzt 4 oder 8 ChildNodes habe und die Attribute (Titelnamen) automatisch in einem gewissen Radius anordnen will, ist mein Wissen zu Ende...

Danke im Voraus!

Gruß
beckersbesters
 
Naja - wo genau liegt denn das Problem? Kannst doch einfach bei x anzuordneten Objekten alle (360/x)° ein Objekt platzieren - um einen Kreis mit entsprechendem Mittelpunkt. Das ist Schulmathematik, irgendwas mit sinus + cosinus oder so.
 
Hi...
@Jens ... tolle Antwort ...

Hier mal mein AS was ich bis jetzt habe.

Code:
circle = this.createEmptyMovieClip('kreis', 1);

var xml:XML = new XML();
xml.ignoreWhite = true;

var initRadius = 100;

initScale = 100;
initFac = 40;

//Center Point
cx = prb_logo._x;
cy = prb_logo._y;

mc = new Array(numKreise);

var num;
var cmslng = "de";

xml.onLoad = onLoad = function (success:Boolean) {
	if (success) {
		parse(this);
	}
};

xml.load(SERVER + "/inc/getpartners.php?cmslng=" + cmslng);

function parse(obj) {
	var xoffset:Number = 0;

	num = obj.childNodes.length;
	
	for (i = 0; i < num; i++) {
		mc[i] = circle.attachMovie('item', 'item'+i, 1+i);
	}
		PositionCircles();
}

test = new Array(0, 90, 180, 270);

PositionCircles = function () {
	for (var i = 0; i<num; i++) {
		mc[i]._y = Math.sin(30*Math.PI/70);
		mc[i]._x = Math.cos(30*Math.PI/70);
		//mc[i]._y = Math.sin(i)*(initRadius+i+initFac)+cy;
		//mc[i]._x = Math.cos(i)*(initRadius+i+initFac)+cx;
		
		trace((Math.sin(i)*(initRadius+i+initFac)+cy)+":"+(Math.cos(i)*(initRadius+i+initFac)+cx));
		
		//mc[i]._y = Math.sin(i*angle)*(initRadius+i+initFac)+cy;
		//mc[i]._x = Math.cos(i*angle)*(initRadius+i+initFac)+cx;
		//mc[i]._xscale = mc[i]._yscale=initScale;
		//trace(Math.sin(initRadius*i)*mc[i]._y);
	}
};

Meine Objekt werden im Kreis angeordnet, aber irgendwo ist der Wurm drin. Wenn ich nur 4 Objekt habe sollten sie sich eigentlich gegenüberstehen (wie ein Würfel)

Danke!

Gruß
 
Wenn ich nur 4 Objekt habe sollten sie sich eigentlich gegenüberstehen (wie ein Würfel)

PHP:
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

var centerX = stage.stageWidth/2;
var centerY = stage.stageHeight/2;
var radius = 100;
var angle = [0, 90, 180 , 270];

for (var i:uint = 0; i<4; i++) {
	var mc:MovieClip = new myMc();
	this.addChild(mc);
	//sin,cos wollen den Winkel in radian und nicht in grad
	mc.x = centerX + Math.cos(angle[i] * Math.PI/180) * radius;
	mc.y = centerY + Math.sin(angle[i]* Math.PI/180) * radius;
}
 
Hi....

@Denniz

Danke für Deinen Ansatz

Hier meine Lösung:

PHP:
var mc = new Array ();
var num = 20;

circle = this.createEmptyMovieClip ('circle', 1);

circle._x = Stage.width / 4;
circle._y = Stage.height / 4;

var centerX = circle._x;
var centerY = circle._y;
var radius = 150;

function parse () {
	for (i = 0; i < num; i++) {
		mc[i] = circle.attachMovie ('kreis', 'kreis' + i, 1 + i);
	}
	positioning ();
}

function positioning () {
	var angle = 360 / num;
	for (i = 0; i < num; i++) {
		var calcangle = angle * (i);
		mc[i]._x = centerX + Math.cos (calcangle * Math.PI / 180) * radius;
		mc[i]._y = centerY + Math.sin (calcangle * Math.PI / 180) * radius;
		//trace(centerX + Math.cos (angle[i] * Math.PI / 180) * radius);
		//trace(mc[i]._x +":"+mc[i]._y);
	}
}
parse();

Gruß
 

Neue Beiträge

Zurück