Aus Das deutschsprachige Scratch-Wiki
Dieser Artikel (oder Abschnitt) ist noch sehr kurz (oder unvollständig!). Hilf mit, ihn ausführlicher zu gestalten, indem du Informationen, Bildmaterial oder Texte hinzufügst. |
Einzelbild ist eine Technik, die Skripte schneller als gewöhnlich ausführt.
Scratch Schleifen wurden mit einer kurzen Verzögerung zwischen den Wiederholungen programmiert. Daher werden die Aktionen langsam ausgeführt. Wenn es diese Verzögerung nicht gäbe, könnten einfache Bewegungsskripte dazu führen, dass eine Figur sofort fliegt oder sogar vom Bildschirm verschwindet. Die Steuer- und Bewegungsblöcke weisen diese Verzögerung auf. Wärend dieser Verzögerung wird eine zusätzliche Bildschirmaktualisierung durchgeführt: Scratch aktualisiert die gesamte Bühne. Dies ist auch eine Ursache für Lags.
Die Einzelbild Technik kann genutzt werden, um diese Verzögerung zu umgehen, so dass schwierige Aufgaben beschleunigt werden. Es ist ungefähr wie der Turbo-Modus. Am einfachsten ist es, alle oben genannten Blöcke zu entfernen, sodass die Bühne nur am Ende des Skripts aktualisiert wird: Alle Veränderungen werden in einem "Einzelbild" durchgeführt.
Beispiel
Ein Beispiel: Die folgenden Skripts führen die selbe Aufgabe aus. Wenn sie jedoch ausgeführt wird, flackert die Figur im zweiten Skript, wärend sie sich im ersten Skript nicht verändert.
Wenn grüne Flagge angeklickt::events hat gehe zu x: (100) y: (0) wiederhole fortlaufend // Einzelbild setze x auf ((x-Position) * (-1)) setze x auf ((x-Position) * (-1)) Wenn grüne Flagge angeklickt::events hat gehe zu x: (100) y: (0) wiederhole fortlaufend wiederhole (2) mal// kein Einzelbild setze x auf ((x-Position) * (-1))
Wenn man die Aktion zweimal hintereinander ausführt, anstatt den Wiederholungsblock zu verwenden, arbeitet das Skript etwas schneller und das Flimmern ist somit weg.
Einzelbild funktioniert nur im Vollbildmodus und im Online Editor. Der Desktop Editor aktualisiert die Bühne häufiger, sodass man das Flimmern immer noch sieht.
Atomarität
Einzelbild bezieht sich auf das Konzept der Atomarität. Atomare Skripte laufen vollständig durch und zeigen danach das Endergebnis. Die meisten Programmiersprachen stellen nur atomare Schleifen zur Verfügung. Für Lernende sind nicht-atomare-Schleifen jedoch leichter zu verstehen. Das folgende Skript reagiert beispielsweise in atomaren und nicht-atomaren Interpretern unterschiedlich:
Wenn grüne Flagge angeklickt::events hat wiederhole (180) mal drehe dich um (1) Grad::motion
In einem atomaren Interpreter würde das Skript für eine Sekunde Pause machen, danach würde sich die Figur plötzlich auf den Kopf stellen. In einem nicht-atomaren Interpreter wie Scratch würde sich die Figur langsam drehen, bis sie auf dem Kopf steht.
Atomare Verfahren
Eigene Blöcke können erstellt wurden, um atomar zu laufen. Wenn man in Scratch beim Erstellen eines eigenen Blocks die Option "Ohne Bildschirmaktualisierung laufen lassen" aktiviert, läuft der eigene Block atomar. Der-Block, der aus Scratch entfernt wurde, führte ein Skript atomar aus, aber hatte immer noch den eingebauten Lag.
Probleme
Wenn man die Einzelbild Technik nutzt, werden die anderen Schleifen langsamer, da Scratch versucht, jede Schleife mit der gleichen Geschwindigkeit zu durchlaufen (schnelle Schleifen beginnen normalerweise nicht mit der zweiten Wiederholung, bis die langsamsten Schleifen ausgeführt sind). Infolgedessen werden Skripts, die möglicherweise schneller waren, bevor die Implementierung der Einzelbildtechnik auf eine der Schleifen angewendet wird, normalerweise langsamer ausgeführt.
Ein anderes Problem ist die Lesbarkeit von Skripts. Komplexe Einzelbild-Projekte haben oft riesige Skripts, die schwierig zu verstehen sind. Im Offline Editor von Scratch 1.x sind größere Skripts schwieriger zu bearbeiten, da sich die Squeack-Umgebung verlangsamt. In enorm großen Skripten kann sich eine Verzögerung von vielen Sekunden entwickeln, was die Bearbeitung schwierig macht. Vor allem das Hinzufügen von Blöcken, das Ziehen von Blöcken, das Eingeben von Text oder Zahlen und das Hinzufügen von Kommentaren werden verzögert.
Es ist unmöglich, einen Wiederhole fortlaufend Block als Einzelbild zu erstellen. Wenn man eine Endlosschleife in einem benutzerdefinierten Atomblock platziert, wird das Projekt sehr stark laggen. Es sollte nicht getan werden.
Tipps
Ein paar Tipps um den Vorgang, Einzelbild-Projekte zu erstellen, zu beschleunigen:
- Nutze die Duplizieren-Funktion. Wenn ein sich wiederholendes Skript benötigt ist, dupliziere das Skript, das entsprechend oft wiederholt werden muss, indem du auf den obersten Block des Skripts rechtsklickts und "Duplizieren" auswählst.
- Vermeide das manuelle Ändern von Werten in Blöcken, da dies zeitaufwendig ist. Wenn ein Wert beispielsweise für jede Wiederholung kontinuierlich inkrementiert werden muss, ist es schneller, ihn durch eine Variable zu ersetzen und am Ende jeder Wiederholung einen "ändere Variable um"-Block hinzuzufügen.
BYOB Einzelrahmen
Die Scratch Modifikation BYOB erlaubt atomare Vorgänge. Um einen Vorgang (Eigener Block) atomar in BYOB 3.1 und höher zu machen, aktiviere die "atomar" Einstellung im Block Editor Dialog. Nutze in BYOB 4.0/Snap! den "warp" Block, um das eingeschlossene Skript atomar zu machen, während es läuft.
Rekursion ist in beiden Versionen atomar. So kann ein atomarer Wiederholungsblock geschrieben werden, der eine Lambda-Eingabe vornimmt und das Lambda rekursiv auswertet, und sich dann selbst auswertet, worduch die Anzahl der Wiederholungen dekrementiert wird: