Aus Das deutschsprachige Scratch-Wiki
Viele Scratch- Projekte erfordern die Verwendung von Rastern. Ein Raster ist ein organisiertes Muster von Objektplatzierungen. Die Gitter haben den gleichen Abstand zwischen den Kacheln, die auf die Bühne gelegt werden. Raster halten ein Projekt mathematisch geordnet. In diesem Tutorial wird erläutert, wie Sie eine Rasterplatzierungstechnik in ein Projekt implementieren.
Mathematische Begründung
Wenn eine Kachel in einem Raster 50 Pixel breit ist, sollte der Abstand so ausgerichtet werden, dass jede Kachel 50 Pixel horizontal von der anderen entfernt ist. Der Grund dafür ist, dass sich die Kacheln nicht überlappen. Die Breite und Höhe der Kacheln sind in einem Rasterskript entscheidend.
Hinweis: In einem Raster hat jede Kachel normalerweise dieselbe Auflösung für die Anordnung und Organisation. Hinweis: Ein Raster ist normalerweise nicht in der Mitte der Bühne zentriert, sondern eine Ecke berührt es.
Programmieren
Das folgende Skript kann in das Kachel-Sprite implementiert werden, um die Welt, den Hintergrund usw. auf die Bühne zu stempeln. Nehmen Sie für das Skript an, dass jede Kachel 50 Pixel breit ist.
wenn die grüne flagge angeklickt wiederhole fortlaufend gehe zu x: ((((maus x-position) / [50]) gerundet) * [50]) y: ((((maus y-position) / [50]) gerundet) * [50]) //platziert die Figur möglichst nah an den mauszeiger falls <Maustaste gedrückt?>, dann warte bis <nicht <Maustaste gedrückt?>> hinterlasse Abdruck //platziert die Figur im Raster end end
Der Schlüsselaspekt der Skripterstellung ist der Block "Gehe zu x () y ()". Die darin enthaltenen mathematischen Funktionen platzieren die Kachel korrekt im Raster. Die Funktionsweise besteht darin, dass zuerst ermittelt wird, wie viele "50" vom Mauszeiger bis zur Bühnenmitte sind. es tut dies durch Abrunden. Wenn sich an der x-Position der Maus ungefähr 4 "50" befinden, muss diese "4" mit einer "50" multipliziert werden, um sie entsprechend dem nächsten "50" -Intervall zu platzieren.
Angenommen, die x-Position der Maus liegt zwischen 50 und 54 Pixel von der Bühnenmitte entfernt . Unabhängig davon, welche dieser Zahlen durch 50 geteilt und gerundet wird, ist sie in beiden Fällen gleich "1". Dann wird diese 1 mit "50" multipliziert, um die x-Koordinate der Kachel auf "50" zu setzen. Wenn sich die Maus "55" Pixeln nähert, wechselt die Kachel dann zu x: "100", da durch Abrunden der durch "50" geteilten Mausposition die nächste 50-Pixel-Intervallposition festgelegt wird.
Festlegen wo die Mitte vom Raster ist
Um eine Kachel in einem Raster visuell so auszurichten, dass sie in das imaginäre Raster passt, kann das Kostümzentrum ein Schlüsselaspekt sein. Angenommen, nach dem Lesen oben beträgt die Breite der Kachel 50 Pixel. Wenn die Kachel auf das x-Koordinatenraster von 50 verschoben wird, ist dies möglicherweise optisch nicht der Fall, obwohl sie sich technisch an dieser Koordinate befindet. Befindet sich das Kostüm der Kachel ganz in der Mitte, erstrecken sich 25 Pixel links von der "50" -Koordinate. In einem Raster berührt der Rand der Kachel den Rand des Rasters. Für diesen Fall gibt es zwei Lösungen. Das Kostümzentrum kann auf eine der Ecken eingestellt werden, oder das Skript kann geändert werden, um es korrekt zu platzieren:
wenn die grüne flagge angeklickt wiederhole fortlaufend gehe zu x: (((((maus x-position) / [50]) gerundet) * [50]) - [25]) y: (((((maus y-position) / [50]) gerundet) * [50]) - [25]) //platziert die Figur möglichst nah an den mauszeiger falls <Maustaste gedrückt?>, dann warte bis <nicht <Maustaste gedrückt?>> hinterlasse Abdruck //platziert die Figur im Raster end end
Diese Methode verschiebt die Kachel um die Hälfte ihrer Pixelbreite und platziert sie korrekt, bevor sie sich zwischen einer Gitterlinie befand.
Hinweis : Im obigen Skript kann die "- 25" in "+ 25" geändert werden. Es wirkt sich nur darauf aus, in welches benachbarte Gitterfeld es platziert wird.
Diamantgitter
Ein Gitter auf Diamantbasis ist weitaus komplexer als ein quadratisches Gitter. Dies liegt daran, dass beim Platzieren von Diamanten in einem Raster jede zweite Spalte / Zeile um die Hälfte der Dimension des Diamanten selbst verschoben wird. Obwohl dies verwirrend sein kann, kann das folgende Skript das Platzieren eines Objekts in der Raute des Gitters replizieren, die der Maus am nächsten liegt. Angenommen, die Breite und Höhe der Diamanten beträgt 24 Pixel (die Hälfte ist 12).
wenn die grüne flagge angeklickt wiederhole fortlaufend falls <<((((maus x-position) / [12]) gerundet) mod [2]) = [1]> und <((((maus y-position) / [12]) gerundet) mod [2]) = [1]>>, dann gehe zu x: ((((maus x-position) / [12]) gerundet) * [12]) y: ((((maus y-position) / [12]) gerundet) * [12]) sonst gehe zu x: ((((maus x-position) / [24]) gerundet) * [24]) y: ((((maus y-position) / [24]) gerundet) * [24]) end end
Original(auf englisch)