Animation starten unter bestimmter Bedingung

Julia shared this problem 2 years ago
Not a Problem

Hallo zusammen,

ich stehe schon wieder vor einem Problem.

Ich möchte gerne, dass eine Animation startet, wenn bestimmte Bedingungen erfüllt sind.

Ich habe einen Wahrheitswert (ich habe ihn Wahr genannt) mit diesen Bedingungen definiert und er zeigt auch "true" an, wenn diese erfüllt sind. Nun wollte ich, dass die Animation startet und habe in das Skripting des Schiebereglers, der einen Punkt auf einem Vektor bewegt "StartAnimation(Wahr)" geschrieben.Ist das die richtige Stelle? Jedenfalls tut sich nichts. Habe auch schon den Befehl StartAnimation(Punkt,Wahrheitswert) in die Eingabezeile geschrieben, funktioniert auch nicht...

Ich habe Geogebra mal wieder für Kunst zweckentfremdet... nicht wundern. Hier ist der Link dazu: https://www.geogebra.org/m/dfbbjry7 (Der Schmetterling soll zur Blume fliegen, wenn Theo auf der roten Blume sitzt und das Kontrollkästchen an ist, also gleichzeitig, wenn der Text Richtig!... erscheint. Ist für das Lernspiel jetzt nicht so wichtig, wäre aber ein schöner Zusatz. Außerdem würde ich gerne wissen, was ich falsch mache ;) )

Ich kann leider nicht die Datei anfügen, da jedes Mal, wenn ich eine Geogebradatei runterlade und ich sie öffnen will, spätestens beim zweiten Mal Geogebra sich einfach leer öffnet. Keine Ahnung woran das liegt...

Schonmal vielen Dank!

Gruß Julia

Best Answer
photo

Scripts und "Bedingung um Objekt anzuzeigen" folgen einer unterschielichen Logik:

"Bedingung um Objekt anzuzeigen" ist beim betroffenen Objekt selbst definiert und reagiert sobald sich der Zustand der referenzierten Wahrheitswerte verändert.

Bei Skripts ist es in einem gewissen Sinne umgekehrt. Die Skripts sind nicht beim betroffenen Objekt definiert, das sie beeinflussen sollen. Die Skriptbefehle beeinflussen das oder die betroffenen Objekte. Die Skripts werden bei jenem Obekt definiert dessen Ereignis für die Auslösung des skriptes relevant ist. Dazu gibt es zwei Ereignis-Typen: das Objekt wurde angeklickt oder der Wert des Skript auslösenden Obektes hat sich verändert (wurde geupdatet).

Das bedeutet in Deinem Fall:

Der Skript steht nicht beim Schieberegler "Bewege". Das auslösende Ereignis ist die Veränderung (update) des Objektes "Wahr". Wenn sich "Wahr" verändert und true ist dann soll "Bewege" auf 0 gesetzt werden und die Animation des Schiebereglers "Bewege" soll starten. (Unabhängig davon könnte, muss aber nicht, "Wahr" zusätzlich in irgend einer "Bedingung um Objekt anzuzeigen" verwendet werden)

Das Verständnis bei welchem Objekt ein Skript eingesetzt werden soll ist sehr entscheidend für erfolgreiche Skript-Programmierung. Wichtig ist zu erkennen: in welchem Objekt geschieht eine Veränderung, das ein anderes Objekt beeinflussen soll.

Und ausserdem ist mir aufgefallen:

w == true schreibt man mit derselben Wirkung als w (also ohne == true). Das Resultat eines Vergleichs ist immer ein Wahrheitswert also muss man den Vergleich für einen Wahrheitswert nicht ein zweites mal definieren.

Es ist notwendig, dass der vorgegebene Ablauf im geeigneten Ereignis zurückgesetzt wird. Ich habe diese Rücksetzung/Initialisierung dem Objekt "A" onUpdate zugeordnet (siehe dort im Skript)

Das Objekt OK_{Theo auf Blume} habe ich in den verschiedenen "Bedingung um Objekt anzuzeigen" angewendet

Die Korrigierte App als Link zu ggTube

https://www.geogebra.org/m/z72rh4uq

Comments (6)

photo
2

I think you need to remove this script from Bewege

StartAnimation(Wahr)

photo
2

Scripts und "Bedingung um Objekt anzuzeigen" folgen einer unterschielichen Logik:

"Bedingung um Objekt anzuzeigen" ist beim betroffenen Objekt selbst definiert und reagiert sobald sich der Zustand der referenzierten Wahrheitswerte verändert.

Bei Skripts ist es in einem gewissen Sinne umgekehrt. Die Skripts sind nicht beim betroffenen Objekt definiert, das sie beeinflussen sollen. Die Skriptbefehle beeinflussen das oder die betroffenen Objekte. Die Skripts werden bei jenem Obekt definiert dessen Ereignis für die Auslösung des skriptes relevant ist. Dazu gibt es zwei Ereignis-Typen: das Objekt wurde angeklickt oder der Wert des Skript auslösenden Obektes hat sich verändert (wurde geupdatet).

Das bedeutet in Deinem Fall:

Der Skript steht nicht beim Schieberegler "Bewege". Das auslösende Ereignis ist die Veränderung (update) des Objektes "Wahr". Wenn sich "Wahr" verändert und true ist dann soll "Bewege" auf 0 gesetzt werden und die Animation des Schiebereglers "Bewege" soll starten. (Unabhängig davon könnte, muss aber nicht, "Wahr" zusätzlich in irgend einer "Bedingung um Objekt anzuzeigen" verwendet werden)

Das Verständnis bei welchem Objekt ein Skript eingesetzt werden soll ist sehr entscheidend für erfolgreiche Skript-Programmierung. Wichtig ist zu erkennen: in welchem Objekt geschieht eine Veränderung, das ein anderes Objekt beeinflussen soll.

Und ausserdem ist mir aufgefallen:

w == true schreibt man mit derselben Wirkung als w (also ohne == true). Das Resultat eines Vergleichs ist immer ein Wahrheitswert also muss man den Vergleich für einen Wahrheitswert nicht ein zweites mal definieren.

Es ist notwendig, dass der vorgegebene Ablauf im geeigneten Ereignis zurückgesetzt wird. Ich habe diese Rücksetzung/Initialisierung dem Objekt "A" onUpdate zugeordnet (siehe dort im Skript)

Das Objekt OK_{Theo auf Blume} habe ich in den verschiedenen "Bedingung um Objekt anzuzeigen" angewendet

Die Korrigierte App als Link zu ggTube

https://www.geogebra.org/m/z72rh4uq

photo
1

d sei dein Wahrheitswert und a der zu animierende Schieber. Dann gibst du im Skriptingteil (bei Update) von d ein.

StartAnimation[a,d]

siehe auch

https://wiki.geogebra.org/d...)

photo
3

Hallo Julia,

Du hast es schon wieder getan ;-)

Dein Thema ist eine ganz normale Frage und KEIN Problem im Sinne eines Programm-Fehlers. mit dem sich die Entwickler beschäftigen müssen

Bitte beachte das in Zukunft (siehe auch Hinweis von rami letztes Posting):

photo
1

Oh, das hatte ich überlesen. Sry.

Das war mir nicht klar. In Zukunft mache ich eine Frage daraus. Danke, dass ihr mir trotzdem geholfen habt. ;)

photo
photo
1

Vielen Dank euch allen! Jetzt weiß ich wie ich da künftig vorgehen muss! :)

Hab es jetzt geändert und es funktioniert. Dann bekommen meine Schüler auch mal rechtzeitig die Geogebra-Aufgabe :)

LG Julia

© 2023 International GeoGebra Institute