Ich versuche, meine erste einfache Grafik-App mit Quil zu schreiben. Im Moment versuche ich nur einen Punkt zu zeichnen, der sich diagonal über den Bildschirm bewegt.Quil beansprucht meine Zeichenfunktion hat 0 Argumente
(ns quil-test.quil-first
(:require [quil.core :as q])
(:gen-class))
(defn setup-state []
(q/frame-rate 60)
{:x 0})
(defn update-state [s]
(assoc s :x (q/frame-count)))
(defn draw-state [state]
(let [x (:x state)]
(q/stroke-weight 100)
(q/point x x)))
(q/defsketch quil-first
:size [500 500]
:setup setup-state
:update update-state
:draw draw-state)
Das Problem ist, das Lauf zeigt nicht einen Punkt, und den folgenden Fehler wird immer wieder auf die Konsole ausgegeben:
Exception in :draw function: #error {
:cause Wrong number of args (0) passed to: quil-first/draw-state
:via
[{:type clojure.lang.ArityException
:message Wrong number of args (0) passed to: quil-first/draw-state
:at [clojure.lang.AFn throwArity AFn.java 429]}]
:trace
[[clojure.lang.AFn throwArity AFn.java 429]
[clojure.lang.AFn invoke AFn.java 28]
[clojure.lang.Var invoke Var.java 375]
[quil.middlewares.safe_fns$wrap_fn$fn__114 invoke safe_fns.clj 9]
[quil.middlewares.bind_output$bind_output$iter__148__152$fn__153$fn__164 invoke bind_output.clj 21]
[quil.applet$_draw invoke applet.clj 220]
[quil.Applet draw nil -1]
[processing.core.PApplet handleDraw PApplet.java 2402]
[quil.Applet handleDraw nil -1]
[processing.awt.PSurfaceAWT$12 callDraw PSurfaceAWT.java 1527]
[processing.core.PSurfaceNone$AnimationThread run PSurfaceNone.java 316]]}
stacktrace: clojure.lang.ArityException: Wrong number of args (0) passed to: quil-first/draw-state
at clojure.lang.AFn.throwArity (AFn.java:429)
clojure.lang.AFn.invoke (AFn.java:28)
clojure.lang.Var.invoke (Var.java:375)
quil.middlewares.safe_fns$wrap_fn$fn__114.invoke (safe_fns.clj:9)
quil.middlewares.bind_output$bind_output$iter__148__152$fn__153$fn__164.invoke (bind_output.clj:21)
quil.applet$_draw.invoke (applet.clj:220)
quil.Applet.draw (:-1)
processing.core.PApplet.handleDraw (PApplet.java:2402)
quil.Applet.handleDraw (:-1)
processing.awt.PSurfaceAWT$12.callDraw (PSurfaceAWT.java:1527)
processing.core.PSurfaceNone$AnimationThread.run (PSurfaceNone.java:316)
Es ist zu sagen, dass meine draw-state
Funktion 0 Argumente übernimmt, wenn es sollte 1. draw-state
nimmt eindeutig 1 Argument obwohl.
Ich verstehe nicht, warum draw-state
irgendwie in eine 0-arity-Funktion "umgewandelt" wird.
Sie interpretieren die Fehlermeldung zurück; es bedeutet, dass Nullargumente bestanden wurden, wenn 1 arg erwartet wurde. –
Ya. Meine Verwirrung rührte von der Tatsache her, dass das Beispiel, das ich betrachtete, eine Zeichenfunktion hat, die ein Argument nahm. Ich habe es gelöst, also werde ich eine Antwort posten. – Carcigenicate
Downvoter, bitte erklären. – Carcigenicate