Tôi đang cố triển khai ví dụ Creating a scene cho ba.js trong clojurescript.Sử dụng clojurescript để hiển thị cảnh Three.js trên trang HTML
Tôi không thực hiện hoạt ảnh và chỉ muốn hiển thị cảnh tĩnh (khối màu xanh lục).
Sự cố có vẻ như trong hàm này được gọi để hiển thị cảnh.
(defn ^:export draw []
(.render renderer scene camera)
)
Đây là những gì đang thực hiện cuộc gọi từ HTML.
%script{:type => "text/javascript"}
three.demo.draw();
Nó thấy và chạy hàm vẽ, ví dụ: khi tôi in ra "HELLO" vào phần thân của tài liệu.
(.write js/document "HELLO")
Tôi không biết có gì sai, mọi thứ khác trên trang được hiển thị.
Trong tập tin HTML này, tôi có
<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>
và
<script type='text/javascript'>
three.demo.draw();
</script>
Dưới đây là kết thúc của main.js, đó là Javascript được tạo ra từ các tập tin clojurescript.
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);
Under: cljsbuild trong file project.clj có
:foreign-libs [{:file "https://raw.github.com/mrdoob/three.js/master/build/three.js"
:provides ["three"]}]
tôi đã cố gắng: externs và: ngoại-libs và không có vẻ làm việc.
Tôi nghĩ rằng nó sẽ giúp ích nếu bạn viết chính xác cùng một phương pháp, nhưng trong JS thuần túy, vì vậy chúng tôi có thể loại bỏ trình dịch mã là vấn đề. Ngoài ra, có một dấu vết ngăn xếp của nó không đi sai lầm nhưng hiển thị không có gì? –