1
png 시퀀스로 생성 된 모든 내용의 창을 어떻게 만들 수 있습니까?Clojure에서 png 이미지 시퀀스 렌더링하기
이 주제에 대한 적절한 기사를 찾을 수 없습니다. 또는 Clojure에서 게임을 거의하지 않을 계획이라면 Java 게임 엔진을 사용하는 것이 더 좋을까요? 이 목적을 위해 무엇을 사용할 것입니까?
png 시퀀스로 생성 된 모든 내용의 창을 어떻게 만들 수 있습니까?Clojure에서 png 이미지 시퀀스 렌더링하기
이 주제에 대한 적절한 기사를 찾을 수 없습니다. 또는 Clojure에서 게임을 거의하지 않을 계획이라면 Java 게임 엔진을 사용하는 것이 더 좋을까요? 이 목적을 위해 무엇을 사용할 것입니까?
적응하자 an example from Wikibooks.
(import '(javax.swing JFrame JPanel)
'(java.awt Dimension Toolkit)
'(java.net URL))
(def url
(URL. "http://www.gravatar.com/avatar/70fa7ca20ce9cbf4c97bb9538034cef7?s=200&d=identicon&r=PG"))
(def avatar
(ref (-> (Toolkit/getDefaultToolkit) (.getImage url))))
(defn image
[]
@avatar)
(defn make-panel []
(let [panel (proxy [JPanel] []
(paintComponent [g]
(.drawImage g (image) 0 0 this)))]
(doto panel
(.setPreferredSize (Dimension. 200 200)))))
(defn make-frame [panel]
(doto (new JFrame)
(.add panel)
.pack
.show))
(def frame
(make-frame (make-panel)))
지금
ref-set
를 사용하여 새로운 이미지로
avatar
심판을 업데이트합니다. 나중에 프레임을 다시 칠하는 것을 잊지 마십시오.
(dosync
(ref-set avatar (-> (Toolkit/getDefaultToolkit) (.getImage "image.png"))))
(.repaint frame)
이제 애니메이션을 만들어 보겠습니다.
(def images
(cycle (map #(-> (Toolkit/getDefaultToolkit) (.getImage %))
["1.png" "2.png" "3.png"])))
(loop [coll images]
(when (.isVisible frame)
(dosync (ref-set avatar (first coll)))
(.repaint frame)
(Thread/sleep 100)
(recur (rest coll))))
시작 하시길 바랍니다.
Java 생태계 용 게임 엔진에 관해서는 lwjgl을 살펴볼 수 있습니다.
고마워요. 잘 지내라. – proofit404
http://stackoverflow.com/questions/233171/what-is-the-best-way-to-do-guis-in-clojure? – noahlz
GUI 프로그래밍보다 사소한 게임에 관한 것입니다. – proofit404