Ich konnte nicht anders, meine Neugier war zu groß: Ich mußte daher unbedingt testen, wie sich Processing.py mit dem gestern vorgestellten Processing 4 schlägt. Daher habe ich ein aktuelle Projekt, das ich aus einer Laune heraus (und aus meiner Beschäftigung mit Greenfoot) begonnen hatte, in TigerJython zu implementieren, in einer rudimentären Version nach Processing.py portiert.
Es geht um einen Doppeldecker, der sich vor einem endlos dahingleitenden Hintergrund bewegt. In meinen Greenfoot-Versuchen war dies jedoch weniger ein Gleiten denn ein Ruckeln des Hintergrunds – ich schiebe das allerdings auf meine mangelnden Java-Kenntnisse und Greenfoot-Erfahrungen. Hier in Processing.py (und auch in TigerJython) wirkt das Scrollen des Hintergrunds schon eher wie eine fließende Bewegung. Als kleines Gimmick rotiert auch noch der Propeller des kleinen, roten Fliegers (hier ist der stotternde Bewegungsablauf beabsichtrigt). In dem kleinen GIF oben könnt Ihr das Ergebnis bewundern.
Dieses GIF habe ich mit dem verbesserten MovieMaker von Processing 4 erzeugt. Die dafür notwendigen Einstellungen könnt Ihr aus diesem Screenshot auslesen. Notwendig dafür ist nur, daß Ihr mit
saveFrame("output/tappyplane_####.png")
von jedem Frame einen Screenshot erzeugt und abspeichert. Und weil ich die Screenshots dann schon einmal hatte, habe ich daraus – ebenfalls mit dem MovieMaker – auch noch ein MP4-Video erzeugt und auf YouTube hochgeladen. Wer hat, der hat. 🤓
Jetzt erst einmal den Quellcode dieses Experiments, den es natürlich auch mit allen Assets in meinem GitHub-Repositorium gibt:
BG_WIDTH = 1067 # Breite des Hintergrundbildes
planes = []
def setup():
global back1, back2, bx, r
size(720, 520)
this.windowTitle("Endless Scrolling Background")
this.windowMove(1300, 30)
back1 = loadImage("desert.png")
back2 = back1
bx = 0
for i in range(3):
plane = loadImage("planeRed" + str(i) + ".png")
planes.append(plane)
r = 0
def draw():
global bx, r
image(back1, bx, 0)
image(back2, BG_WIDTH + bx, 0)
bx -= 1
if bx == -BG_WIDTH:
bx = 0
# noLoop()
image(planes[int(r)], 50, 200)
# saveFrame("output/tappyplane_####.png")
r += 0.2
if r >= 3:
r = 0
Die beiden auskommentierten Zeilen hatte ich für die Erzeugung des GIFs und des Videos verwendet.
Jetzt noch die Credits: Das Hintergrundbild stammt vom User PWL auf OpenGameArt.org und der Flieger stammt mal wieder aus dem riesigen Fundus von Kenney.nl. Beide Assets sind unter der Public Domain Licence CC0 für die Verwendung freigegeben und verlangen auch keine Namensnennung. Aber ich möchte mich mit dieser bei den Urhebern bedanken.
Natürlich erwartet Ihr auch ein Testergebnis: Alles funktioniert auch unter Processing 4 mit Processing.py bestens und wie erwartet, nur … es gibt keine oder nur sehr wenige Fehlermeldungen (die es in der Java-Version und unter Processing 3) gibt. Und so tappt man häufig im Dunkeln und das erschwert ein Experimentieren natürlich doch sehr stark. Hier gibt es also noch dringenden Nachbesserungsbedarf – denn auch von Py5 und TigerJython bin ich in dieser Hinsicht mehr und bessere Unterstützung gewohnt. Bis dahin werde ich für meine Processing.py-Versuche wohl noch weiterin auf Processing 3 setzen und nur, wenn ich ein animiertes GIF benötige, Processing 4 anwerfen.
Über …
Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!
Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.
Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.
Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes
von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.
Werbung
Diese Spalte wurde absichtlich leergelassen!