클로저 스크립트에서 three.js에 대한 Creating a scene 예제를 구현하려고합니다.Clojurescript를 사용하여 HTML 페이지에서 Three.js 장면 렌더링
애니메이션을 수행하지 않고 정적 장면 (녹색 블록)을 표시하려고합니다.
이 함수는 장면을 렌더링하는 데 문제가있는 것으로 보입니다.
(defn ^:export draw []
(.render renderer scene camera)
)
이것은 HTML에서 호출하는 것입니다.
%script{:type => "text/javascript"}
three.demo.draw();
예를 들어 문서의 본문에 "HELLO"를 인쇄 할 때 그리기 기능을보고 실행합니다.
(.write js/document "HELLO")
무엇이 잘못되었는지 전혀 알지 못합니다. 페이지의 모든 내용이 렌더링됩니다. 이 HTML 파일에서
, 내가<script src='https://raw.github.com/mrdoob/three.js/master/build/three.js'></script>
<script src='js/main.js' type='text/javascript'></script>
<script type='text/javascript'>goog.require('main')</script>
및
<script type='text/javascript'>
three.demo.draw();
</script>
이 아래 clojurescript 파일에서 생성 된 자바 스크립트입니다 main.js의 끝입니다. 아래에서
goog.provide("three.demo");
goog.require("cljs.core");
goog.require("goog.dom");
three.demo.scene = new THREE.Scene;
three.demo.camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1E3);
three.demo.renderer = new THREE.WebGLRenderer;
three.demo.renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(three.demo.renderer.domElement);
three.demo.geometry = new THREE.CubeGeometry(1, 1, 1);
three.demo.material = new THREE.MeshBasicMaterial(cljs.core.ObjMap.fromObject(["\ufdd0'color"], {"\ufdd0'color":255}));
three.demo.cube = new THREE.Mesh(three.demo.geometry, three.demo.material);
three.demo.scene.add(three.demo.cube);
three.demo.camera.position.setZ(5);
three.demo.draw = function draw() {
three.demo.renderer.render(three.demo.scene, three.demo.camera);
return document.write("HELLO")
};
goog.exportSymbol("three.demo.draw", three.demo.draw);
: externs과 : 외국 libs가와를 둘 다 작동하는 것 같습니다 project.clj 파일 cljsbuild 내가 시도하지
:foreign-libs [{:file "https://raw.github.com/mrdoob/three.js/master/build/three.js"
:provides ["three"]}]
있습니다.
정확히 같은 방법으로 작성했지만 순수 JS에서는 도움이 될 것이라고 생각합니다. 따라서 코드 변환기를 문제로 제거 할 수 있습니다. 또한 스택 추적은 오류가 없지만 아무것도 표시하지 않습니까? –