1

すべてのコンテンツがpngシーケンスで作成されたアニメーションであるウィンドウを作成するにはどうすればよいですか?

このテーマに適した記事が見つかりません。または、Clojureで小さなゲームをする予定がある場合は、Javaゲームエンジンを使用する方が良いのではないでしょうか。この目的のために何を使用しますか?

4

1 に答える 1

5

ウィキブックスの例を採用してみましょう。

(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を見てみることをお勧めします。

于 2012-11-19T18:28:31.007 に答える