| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Hamburg
Beiträge: 35
| Rekursive Funktion - Baum zeichnen lassen. Hilfe!
Hallo, ich möchte mit Actionscript einen Baum zeichnen. Mit einer Rekursiven Funktion. Aus jedem Ast sollen zwei Äste sprießen. So ein wenig funktioniert das auch schon, aber er führt die zweite Funktion nicht wirklich aus.. Ich hab den zweiten Ast rot gefärbt, damit man das besser erkennen kann. Weiß jemand wo der Fehler liegt? Oder ist der Herangehensweise komplett fürn Arsch? Und noch eine Frage: Falls das dann gehen sollte, wie schafft man es am elegantesten, dass der Baum Schritt für Schritt aufgebaut wird? Freue mich über jeden Tipp oder Rat! Danke, Raphael ![]() Hier der Code: count = 1; _root.createEmptyMovieClip("baum", 1); // zeichneAst = function (startX, startY, color) { count++; // zielkoordinate setzen var newX = startX+(random(60)-30); var newY = startY-10-random(20); // linie zeichnen with (_root.baum) { lineStyle(1, color, 100); moveTo(startX, startY); lineTo(newX, newY); } // anzahl der durchgänge begrenzen if (count>20) { break; } else { // funktion rekursiv ausführen, zweimal, da aus einem ast zwei äste wachsen zeichneAst(newX, newY, "0x000000"); zeichneAst(newX, newY, "0xFF0000"); } }; // initial zeichneAst(Stage.width/2, Stage.height, "0x000000"); |
| | |
| | #2 (permalink) |
| querdenker Registriert seit: Jun 2001 Ort: formel1-stadt hockenheim
Beiträge: 4.731
|
übergib noch n parameter an die funktion, der ein boolean ( true oder false) ist. wenn der param false zeichne nur den einen ast ( wie immo deinen funktion ist), wenn aber true, dann zeichen in der gleichen funktion auch gleich noch den zweiten ast dazu...verstanden? greetz kelor |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
sowas geht schicker: ein rechteck als ast-mc. der nullpunkt des rechtecks liegt an einem ende. am anderen ende und z.b. in der mitte ein punkt-mc, an das du weitere ast-mc's drann hängen kannst. mit ein bisschen random die winkel ändern; fertig ist der baum. durch scalieren das stammes "wächst" dann der ganze baum. http://www.seibsprogrammladen.de/fra...ion/Baum/flash zu deinem programm: das ist soweit schon richtig. nur dein count geht nicht. er verschachtelt, verschachtelt, verschachtelt und dann brichst du einfach das zeichnen ab. du musst die verschachtelungstiefe abbrechen um ihm die möglichkeit zu geben, zurückkehren zu können, um die anderen verschachtelungen aus zu führen. also nicht die anzahl (die bei dir immer tiefer verschachtelt) zählen, sondern die aktuelle verschachtelungstiefe ermitteln, ab der nicht mehr tiefer verschachtelt werden soll. und mach alle werte zu variablen mit vernüftigen namen. ActionScript:
verlege deinen baum in ein array. z.b.: gAst[0] ist immer der stamm ast1:1 verweisst darauf, das es einen zweig gibt, in gAst[1] definiert. ast2:0 da wäre noch kein zweig drann, der könnte beim nächsten mal ergänzt werden mit zweig2:2 und gAst[2]... oder z.b. zweig1 in gAst[1] usw. ActionScript:
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (29-12-2004 um 15:43 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Hamburg
Beiträge: 35
|
Nee, das verstehe ich ehrlich gesagt nicht ganz. Geht das nicht gegen die Idee der Rekursion? Ich meine, eigentlich sollte die Funktion doch unabhängig von der Anzahl der Äste funktionieren.. Oder verstehe ich das Falsch?! Hast du das ausprobiert bei dir, und ging es? Danke, Raphael |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Hamburg
Beiträge: 35
|
Na, da habe ich wohl geantwortet, als du gerade geantwortet hast! Aber das ist es! Danke! Klar, ich hab die Funktion gestoppt bevor er überhaupt die Rekursionen zurücklaufen lassen konnte, ich Idiot ![]() Weißt du auch wie man am elegantesten diesen Baum nun Schritt für Schritt animieren kann? Ist man auf Frameaktionen angewiesen oder wie macht man das am besten bei Rekursionen? Vielen Dank, Raphael |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..da habe ich wohl geantwortet, als du gerade geantwortet hast!.." dito
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |