我正在尝试在clojurescript 中实现为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>
下面是 main.js 的结尾,它是从 clojurescript 文件创建的 Javascript。
    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);
在 project.clj 文件中的 :cljsbuild 下有
    :foreign-libs [{:file "https://raw.github.com/mrdoob/three.js/master/build/three.js"
                    :provides ["three"]}]
我尝试了 :externs 和 :foreign-libs ,但似乎都不起作用。