Animierte Butterfly Curve verhält sich seltsam
Übersicht BlitzBasic Beginners-Corner
FlushBetreff: Animierte Butterfly Curve verhält sich seltsam |
Sa, März 31, 2018 22:28 Antworten mit Zitat |
|
---|---|---|
Hi,
ich habe ein kleines Prg. deschrieben das eine Butterfly Curve zeichnet. Das ganze dient nur den Learning Purpuoses. Ob LUT's einen Sinnmachen oder nicht ist hier nicht das Problem. Ich lasse die verschieden gro0en Kurven nacheinander in der Funktion BlitzBasic: [AUSKLAPPEN] DrawButterFly()auf den BackBuffer zeichnen und flippe dann alles ständig auf den FrontBuffer und erreiche so eine kleine Animation. Das funktioniert mit den ersten vier Kurven. Sobald ich die 5. flippe (auskommentierter Teil) gibt es ein Standbild! Weshalb ist das so und wie mach ich's richtig? BlitzBasic: [AUSKLAPPEN]
Vielen Dank für Eure Hilfe und frohe Ostern! Grüße, Flush edit: Horizontale Kommentarzeilen gekürzt, damit das Forenlayout nicht zerschossen wird. - Xeres |
||
HolzchopfMeisterpacker |
Sa, März 31, 2018 23:12 Antworten mit Zitat |
|
---|---|---|
Das kommt daher, dass du fünf Schleifen hast und somit i immer wieder (immer zu Beginn der Repeat-Schleife) denselben Wert hat. Also hast du auch keine Bewegung mehr in deiner Animation.
Es gibt verschiedene Lösungsansätze: 1.) Als Workaround könntest du nach der 5. Schleife einfach noch einmal i um eins erhöhen * 2.) Eine zweite Zählvariable einführen, die du einmal pro Repeat-Schleife erhöhst und i immer zu Beginn der Repeat-Schleife deren Wert zuweist. * Einfacher (und irgendwie auch sicherer) ist es, statt BlitzBasic: [AUSKLAPPEN] i = i + 1 BlitzBasic: [AUSKLAPPEN] i = (i + 1) Mod 5 zu schreiben. LG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Flush |
So, Apr 01, 2018 15:15 Antworten mit Zitat |
|
---|---|---|
@Holzchopf
Danke für die schnelle Antwort und das auch noch an einem Ostersonntag Ich nutze i doch nur um durch das Array mit den farbigen Bällen zu gehen und setze i dann wieder auf 0. In jeder For-Schleife das gleiche. Das funktioniert 4 Mal, beim 5. mal nicht mehr. Bei Deiner 1. Lösung bekomme ich eine Memory Access Violation, nachdem es etwa 1 Sekunde funktioniert hat, weil ich die Arraygrenzen überschreite! Bei Deiner 2. Lösung passiert leider nichts. Ich hab den Code der Draw Funktion nochmal mit Deinen Änderungen gepostet. Hast Du das so gemeint? BlitzBasic: [AUSKLAPPEN]
Viele Grüße und frohe Ostern, Flush |
||
Flush |
So, Apr 01, 2018 15:39 Antworten mit Zitat |
|
---|---|---|
Gelöst, ich hab einfach noch einen Index in dem Array der farbigen Bälle das ich durchgehe hinzugefügt
BlitzBasic: [AUSKLAPPEN]
Viele Grüße, Flush |
||
HolzchopfMeisterpacker |
So, Apr 01, 2018 17:47 Antworten mit Zitat |
|
---|---|---|
Flush hat Folgendes geschrieben: Ich nutze i doch nur um durch das Array mit den farbigen Bällen zu gehen und setze i dann wieder auf 0. In jeder For-Schleife das gleiche.
Das funktioniert 4 Mal, beim 5. mal nicht mehr. Gut, dass es jetzt funktioniert. Aber ich möchte noch deine Aussage korrigieren, denn vielleicht hilft es dir, in Zukunft Fehler schneller/selber zu finden oder du hast grad einfach nur einen Knoten in deiner Überlegung und dann wär's gut, den zu lösen Du setzt i zwar schon auf 0 ABER eben nur, wenn es nach dem Inkrementieren 5 ist. Zu Beginn der nächsten For-Schleife hat es dann einfach immer noch den Wert, den es beim Verlassen der vorherigen hatte. Schauen wir das mal im Detail an:
Wenn jetzt noch eine vierte For-Schleife kommt, würde da einfach noch dazwischen stehen: Die vierte For-Schleife wird 721 mal durchlaufen, danach ist i=0 Und somit wäre zu Beginn der Repeat-Forever-Schleife der Wert von i immer wieder 0, also würde einfach jedes mal exakt dasselbe gezeichnet, weil immer die selben Startbedingungen herrschen. Flush hat Folgendes geschrieben: Bei Deiner 1. Lösung bekomme ich eine Memory Access Violation
Wahrscheinlich, weil i 6 sein kann? Da war ich wohl nicht klar genug, dass bei dieser Variante auch das If i=5 Then i=0 hingehört (oder das Mod 5). Flush hat Folgendes geschrieben: Hast Du das so gemeint?
Fast. Es müsste lediglich statt j = i heissen: i = j |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Flush |
So, Apr 01, 2018 18:16 Antworten mit Zitat |
|
---|---|---|
@Holzchopf
Oh Mann, und ob ich da einen Knoten hatte ! Vielen Dank, jetzt hat's gefunkt vor allem für die Zukunft Vielen Dank nochmal Holzchopf! Vile Grüße, Flush |
||
Flush |
So, Apr 01, 2018 20:52 Antworten mit Zitat |
|
---|---|---|
@Holzchopf
Du hast ne PN Viele Grüße, Flush |
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group