Ich habe eine Frage zu Elm Canvas. Gibt es eine Möglichkeit zu verhindern, dass die Zeichenfläche im DOM jedes Frames gelöscht/wieder eingefügt wird?Wie kann ich Canvas-Inhalt in Elm zwischen Updates beibehalten
Ich versuche, ein Bild dynamisch zu erzeugen, indem ich ein Partikelsystem ändere (Model
) und dann zeichne es. Der Pseudocode sieht wie folgt aus.
Meine einzige "Lösung" ist nicht die Partikel zu ändern und stattdessen hinzuzufügen, aber ich bin nicht glücklich mit dem Ansatz.
type alias Particle = { ... }
type alias Model = List Particle
update msg model =
List.map updateParticle model
view model =
collage 900 900
((rect 900 900 |> filled bg) :: (List.map drawParticle model))
-- later edit
drawParticle p =
segment p.start p.end
|> traced defaultLine
[EDIT] Um es klar zu machen, was das DOM enthält, habe ich drawParticle
Funktion, um den Code oben.
Können Sie beobachten, dass der Canvas entfernt/wieder eingefügt wird? Ich würde erwarten, dass virtualdom die Zeichenfläche und alle Partikel, die sich nicht geändert haben, nur Elemente entfernt/neu rendert, die tatsächlich verschoben wurden. –
Nein, ich habe es nicht beobachtet (ich kann es mir aber ansehen). Es war meine Vermutung, aber das macht nichts. Ich möchte, dass die Zeichnung bis zu diesem Punkt beibehalten und einfach hinzugefügt wird. – Adrian
Nein. Es wird nicht aus DOM entfernt. – Adrian