Return 来自 CoffeeScript 函数的对象

Return an object from a function in CoffeeScript

我正在编写一段代码,应该为 3D 场景设置动画。我使用 类 和函数在代码中整齐地构建了 3D 场景。这本身就是一个文本输出的东西。

从逻辑上讲,它不需要只吐出文本。 Threejs 库应该与我构建的内容交互。

我想做这样的事情,例如:

class Tile extends SuperSpace
  height: 2
  sideLength: 10
class Plain extends Tile
  constructor: ( { @color = 'lightgreen', @height = @height, @heightPlacement = 2 } = {} ) ->
    console.log """
                  New plain:
                    color: '#{@color}'
                    sideLength: #{@sideLength}
                    height: #{@height}
                    heightPlacement: #{@heightPlacement}
                """
  mesh: ->
    geometry = new THREE.BoxGeometry 10/10, 2/10, 10/10
    material = new THREE.MeshBasicMaterial { color: 0x22ff22 }
    cube = new THREE.Mesh geometry, material
    return cube

并在场景中简单地这样调用它:

scene.add plain.mesh

这只不过是对文档中现有示例的修改。 plain.mesh 应该是返回的 cube

不知何故,对象没有进入低谷。我要么得到 undefined,要么在控制台中得到我的整个功能:

function () {
      var cube, geometry, material;
      geometry = new THREE.BoxGeometry(10 / 10, 2 / 10, 10 / 10);
      material = new THREE.MeshBasicMaterial({
        color: 0x22ff22
      });
      cube …

很难令人满意。有什么建议吗?

这个有效:

class Tile extends SuperSpace
  height: 2
  sideLength: 10
class Plain extends Tile
  constructor: ( { @color = 'lightgreen', @height = @height, @heightPlacement = 2 } = {} ) ->
    console.log """
                  New plain:
                    color: '#{@color}'
                    sideLength: #{@sideLength}
                    height: #{@height}
                    heightPlacement: #{@heightPlacement}
                """
  mesh: ->
    geometry = new THREE.BoxGeometry 10/10, 2/10, 10/10
    material = new THREE.MeshBasicMaterial { color: 0x22ff22 }
    cube = new THREE.Mesh geometry, material
    return cube

plain = new Plain()
console.log plain.mesh()