marian
Erfahrenes Mitglied
Hallo,
wollte ein Baummenu erstellen und scheiter an meiner unproffessionellen mathematischen- oder btw script- Lösung. Also der Script befindet sich noch in der Lösungssuche
So zum Script:
Ich hab den Script nicht komplett abgearbeited, da die possyX/Y, die ich eweils in den einzelnen Knoten declariere, probleme bereiten!
Also das Problem ist, dass die Rückverfolgung von diesen possys[kReihe/kSpalte]. innerhalb der forschleife nicht exact ist. Diese Possitionierungen brauch ich da die neu attachten MovieClips, "ast" ja ihre "Knoten"-Austrichtung zugeteilt bekommen sollen. Die Rückverfolgung soll immer bis zum "unterknoten" gehn(auf dem die gabelung steckt). Die Äste werden Pyramiedenförmig aufgebaut. Wenn gabel "i" erreicht wird, wird eine Reihe dazu addiert,(// :setReihe/Spalte
erzeugt die Baumstruktur --> gabel = i+i; kReihe = 0; kSpalte++; ) wobei sich die anzahl der Äste verdoppeln sollen. // :switch soll die Astgabelung (Links/Rechts) Switchen, also den winkel für den Ast - oder + stellen.
Naja es ist wohl sehr schwer sich ein Überblick zu verschaffen.. evt hat ja jemand ein besseren Lösungsansatz?
Im Anhang ist die Visualizierung..
Gruß
wollte ein Baummenu erstellen und scheiter an meiner unproffessionellen mathematischen- oder btw script- Lösung. Also der Script befindet sich noch in der Lösungssuche
So zum Script:
PHP:
// :TreeSoundPlayer
loadXML("xml/soundlist.xml");
// :loadXML
function loadXML(nameXML) {
myXML = new XML();
myXML.ignoreWhite = true;
myXML.load(nameXML);
myXML.onLoad = function(status) {
if (status) {
var xlist = myXML.firstChild.childNodes;
var anz = xlist.length;
this.current = 0;
pars(anz,xlist);
aniFirst(anz);
}
};
};
// :pars XML
function pars(anz,xlist) {
name = new Array();
pfad = new Array();
name = [];
pfad = [];
for (i=0; i<anz; i++) {
name[i] = (xlist[i].attributes.name);
pfad[i] = (xlist[i].attributes.pfad);
if (i == anz-1) {
setTree(anz);
delete myXML
}
}
};
// :setTree
function setTree(anz) {
// :config
var astH = 100;
var astB = 20;
var gabel = 1;
var kSpalte = 0;
var kReihe = 0;
var winkel_A = 20;
var A_x = 0;
var A_y = 0;
var c_laenge = astH;
var b_laenge = Math.sin(winkel_A)/c_laenge;
var a_laenge = Math.cos(winkel_A)*c_laenge;
var B_x = A_x+b_laenge;
var B_y = A_y+a_laenge;
posX = new Array();
posY = new Array();
posY =[];
posX = [];
knoten = [];
posX[kReihe+""+kSpalte] = B_x
posY[kReihe+""+kSpalte] = B_y
this.createEmptyMovieClip("baum", 5);
// :Berechne Baum Possy
this.baum._x = (Stage.width/2);
this.baum._y = (Stage.height/2);
for (var i = 0; i<anz; i++) {
var c_laenge = astH;
knoten[i] = this.baum.attachMovie("ast", "ast"+i, i);
knoten[i].sName = xlist[i].attributes.name;
// :berechne Höhe und Breite für Äste
knoten[i]._width = astB-(kSpalte*2);
knoten[i]._height = astH-(kSpalte*2);
// :switch Left/Right Winkel
if(R == true){
var R = false;
// :berechne Winkel
knoten[i]._rotation =winkel_A
// :berechne Possy
b_laenge = Math.sin(winkel_A)/c_laenge;
a_laenge = Math.cos(winkel_A)*c_laenge;
B_x = A_x+b_laenge;
B_y = A_y+a_laenge;
// :declariere den Knoten
posX[kReihe+""+kSpalte] = B_x
posY[kReihe+""+kSpalte] = B_y
}else{
var R = true
// :berechne den Winkel
knoten[i]._rotation =winkel_A*-1
// :berechne Possy
b_laenge = Math.sin(winkel_A)/c_laenge;
a_laenge = Math.cos(winkel_A)*c_laenge;
posX[kReihe+""+kSpalte] = B_x
posY[kReihe+""+kSpalte] = B_y
}
// :Auf Knoten Ausrichten (Knoten Possys abrufen auf dem der Clip anliegen soll)
knoten[i]._x = posX[(-kReihe)+""+(Math.round(kSpalte/2))];
knoten[i]._y = posY[(-kReihe)+""+(Math.round(kSpalte/2))];
//
//var A_x = 0; //muss nochin die Rechnung intigriert werden
//var A_y = 0; //""
// :setReihe
kReihe++;
// :setSpalte
if(gabel == i){
// :verdoppel die Gabelanzahl
gabel = i+i;
// :berechne reihen und spalten für Knoten
kReihe = 0;
kSpalte++;
}
}
};
// :loadFirst
function aniFirst(anz) {
this.onEnterFrame = function() {
if (pfad[0] != undefined) {
aniNext(anz);
delete this.onEnterFrame;
}
};
};
// :loadNext
function aniNext(anz) {
if (current != anz) {
knoten[current].ladeSound(knoten[current]);
//knoten[current]._visible = 100;
current++;
}
}
Ich hab den Script nicht komplett abgearbeited, da die possyX/Y, die ich eweils in den einzelnen Knoten declariere, probleme bereiten!
Also das Problem ist, dass die Rückverfolgung von diesen possys[kReihe/kSpalte]. innerhalb der forschleife nicht exact ist. Diese Possitionierungen brauch ich da die neu attachten MovieClips, "ast" ja ihre "Knoten"-Austrichtung zugeteilt bekommen sollen. Die Rückverfolgung soll immer bis zum "unterknoten" gehn(auf dem die gabelung steckt). Die Äste werden Pyramiedenförmig aufgebaut. Wenn gabel "i" erreicht wird, wird eine Reihe dazu addiert,(// :setReihe/Spalte
erzeugt die Baumstruktur --> gabel = i+i; kReihe = 0; kSpalte++; ) wobei sich die anzahl der Äste verdoppeln sollen. // :switch soll die Astgabelung (Links/Rechts) Switchen, also den winkel für den Ast - oder + stellen.
Naja es ist wohl sehr schwer sich ein Überblick zu verschaffen.. evt hat ja jemand ein besseren Lösungsansatz?
Im Anhang ist die Visualizierung..
Gruß