2017-03-02 15 views
1

나는 다른 예제와 함께 작동하지만, quil/Processing과 함께 사용하려고한다. 이 간단한 스크립트를 작성하여 실행하려고했지만 Java Applet 창이 시작되면 즉시 닫힙니다. 디버깅 할 오류 로그가 없습니다.quil/processing 스케치를로드하는 부트 스크립트를 작성하려면 어떻게해야합니까?

#!/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의 코드를 간략하게 살펴 보았습니다. defsketchprocessing.core.PApplet을 구현하는 quil.Applet의 인스턴스를 반환합니다. PApplet은 AWT 클래스를 확장하거나 구현하지 않고 AWT를 사용하지만 내부적으로 다른 Processing 클래스를 생성합니다.

창을 열린 상태로 유지하는 가장 간단한 방법은 스케치를 만든 후 (.read System/in)으로 콘솔에서 읽는 것입니다. 다른, 더 멋진 접근법이 있을지도 모른다.