すべてのコンテンツがpngシーケンスで作成されたアニメーションであるウィンドウを作成するにはどうすればよいですか?
このテーマに適した記事が見つかりません。または、Clojureで小さなゲームをする予定がある場合は、Javaゲームエンジンを使用する方が良いのではないでしょうか。この目的のために何を使用しますか?
ウィキブックスの例を採用してみましょう。
(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)))
avatar
次に、を使用して参照を新しい画像に更新しref-set
ます。後でフレームを塗り直すことを忘れないでください。
(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を見てみることをお勧めします。