2017-03-02 91 views
1

我有启动与其他例子,但即时通讯尝试与quil /处理使用它。 我写了这个简单的脚本并试图运行它,但它所做的只是启动一个Java Applet窗口,然后立即关闭。没有错误日志供我调试。如何编写启动脚本来加载quil /处理草图?

#!/usr/bin/env boot 
(set-env! :dependencies '[[quil "2.6.0"]]) 
(require '[quil.core :as q]) 
(defn setup [] 
    (q/background 111 111 111) ) 
(defn -main [& args] 
    (q/defsketch my-art 
    :size [800 800] 
    :setup setup)) 
+1

窗口创建完成后,JVM可能没有其他任何操作并退出。您是否在调用'q/defsketch'后尝试添加'(Thread/sleep 5000)'来检查? –

+0

调用defsketch后添加睡眠工作,这在关机前工作5秒钟。 我认为通过使用绘图,它应该接管程序执行,因为它应该被连续调用。如果我不添加睡眠,绘画内部的println永远不会被调用。主要的println总是被调用。 – jas

回答

0

此代码有效,但它不是正确的答案,因为它使用睡眠。有没有更好的方法来做到这一点没有睡觉?:

#!/usr/bin/env boot 
(set-env! :dependencies '[[quil "2.6.0"]]) 
(require '[quil.core :as q]) 

(defn draw [] 
    (println "in draw") 
    (q/background 111 111 111) ) 

(defn -main [& args] 
    (println "starting") 
    (q/defsketch my-art 
    :size [800 800] 
    :draw draw) 
    (Thread/sleep 5000)) 
0

窗口创建后,主线程可能没有别的事可做,JVM退出。您可以在致电q/defsketch后添加(Thread/sleep 5000)来确认。

我快速查看了quil的代码。 defsketch返回quil.Applet的一个实例,它实现processing.core.PApplet。虽然PApplet在封面下使用AWT,但它不扩展或实现任何AWT类,它在内部创建其他处理类。

保持窗口打开的最简单方法是在创建草图后从控制台读取(.read System/in)。尽管如此,可能还有其他更奇特的方法。

相关问题