Javascript在映射中存储内部对象

Javascript在映射中存储内部对象,javascript,map,three.js,Javascript,Map,Three.js,如何将网格正确存储到贴图中?在调用addMesh时,确保map[key](this.meshMap)是一个对象。请注意,这与说贴图本身是对象不同。如果map[key]不是对象,则它不能具有属性(例如位置) 您可以尝试以下操作: this.meshMap = new Object(); this.addMesh = function(key,url) { var map = this.meshMap; // redefinition

如何将网格正确存储到贴图中?

在调用addMesh时,确保map[key](this.meshMap)是一个对象。请注意,这与说贴图本身是对象不同。如果map[key]不是对象,则它不能具有属性(例如位置)

您可以尝试以下操作:

   this.meshMap = new Object();

    this.addMesh = function(key,url)
        {
          var map = this.meshMap; // redefinition

          var loader = new THREE.JSONLoader();

          loader.load( url, function(geometry)
          {
                map[key] = new THREE.Mesh(geometry, material); // object to store

                scene.add(map[key]); // Works
          });

          map[key].position = new THREE.Vector3(0, -10, 0); // ERROR: Null

        }

我该怎么做呢?我不明白为什么我会得到一个空指针。如果(map[key])map[key]。position=new THREE.Vector3(0,-10,0);好的,我这样做了,if语句没有运行。意思是对象返回为空?在将map[key]设置为新网格后,也可以将线移动到块中。因为这部分是事件驱动的,所以它只会在给它一个值之后发生,而现在它会在之前发生。是的,我可以做到。但我需要它在创建网格后访问网格。
this.meshMap = new Object();

this.addMesh = function(key,url)
    {
      var map = this.meshMap; // redefinition

      var loader = new THREE.JSONLoader();

      loader.load( url, function(geometry)
      {
            map[key] = new THREE.Mesh(geometry, material); // object to store
            map[key].position = new THREE.Vector3(0, -10, 0); // ERROR: Null
            scene.add(map[key]); // Works
      });


    }