XbsjEarthUI icon indicating copy to clipboard operation
XbsjEarthUI copied to clipboard

我试了两种加obj的方法,想问下有什么区别

Open vtxf opened this issue 5 years ago • 0 comments

再问下,我试了两种加obj的方法,想问下有什么区别。

1.用XE.Obj.Type(earth, config)生成出来的东西并没有加入sceneTree

var config = { "czmObject": { xbsjType: "Cylinder", // 类型不可更改! startPosition, // 起点 endPosition, // 终点 radius: 20, // 圆柱体的实际半径 fixScreenSize, // 固定的屏幕像素,如果为0的话,表示用实际尺寸,即radius;大于0时radius不起作用 maxSceneScale, // 使用固定的屏幕像素时,模型实际的最大缩放比例,如果设置为Number.POSITIVE_INFINITY表示没有限制 // maxSceneScale: Number.POSITIVE_INFINITY, // 无限大 }, ref: name }; console.log(config)

                    const cylinder = new XE.Obj.Cylinder(this._earth, config);
				  console.log(earth.sceneTree.$refs[name])
                   

我这样可以把cylinder加到地图上,但无法通过earth.sceneTree.$refs[name]索引。

  1. 通过这种方法把obj加进去: earth.sceneTree.root.children.push(config) var cylinder = earth.sceneTree.$refs[name].czmObject 这样在scenetree里可以索引加进去的cylinder。
    我想问下,这两种方法除了第二种把obj加进了scenetree外还有什么区别呢?第二种有没有什么其他副作用呢?谢谢

第二种方式,相当于对象受sceneTree管理;直接清空数组,就会自动销毁; 第一种方式,需要手动调用destroy方法来销毁对象; 第一种方式创建的对象,也可以加到sceneTree当中,通过 scene.root.children.push(new XE.SceneTree.Leaf(obj))加入即可,加入之后,就不能手动destroy了。

vtxf avatar Nov 22 '19 03:11 vtxf