2017-03-02 93 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)。儘管如此,可能還有其他更奇特的方法。

相關問題