如何对Point3D对象正确使用setPosition方法?
Point3D 位置设置方案
Point3D和2D Point的坐标更新逻辑不通用,2D场景下setPosition()搭配board.fullUpdate()的方案只针对平面坐标对象,Point3D存储的是三维空间坐标,直接调用2D版本的setPosition()只会修改平面投影层的临时参数,不会更新底层三维坐标缓存,自然不会触发预期的位置变更。
正确操作流程如下:
- 调用Point3D专属的
setPosition3D(x, y, z)方法,传入三维空间下x、y、z三个轴的目标坐标值,这是官方提供的唯一会同步更新三维坐标缓存的入口方法,不要直接手动修改实例的X/Y/Z属性,这类直接赋值不会触发坐标变更的事件监听,后续渲染仍会读取旧值 - 坐标赋值完成后,先对当前Point3D实例调用
update()方法,刷新单对象的坐标缓存 - 执行
board.update3D()完成整个3D场景的重绘,如果场景中存在和当前Point3D绑定的3D线段、3D面片等关联元素,这一步会同步更新所有关联元素的位置 - 最后按需调用
board.fullUpdate()同步2D投影层的显示即可
可直接参考的实现代码:
// 无效写法:直接套用2D点的更新逻辑 // myPoint3D.setPosition(100, 200); // board.fullUpdate(); // 有效写法 myPoint3D.setPosition3D(20, 60, 35); // 传入目标三维坐标 myPoint3D.update(); // 刷新单对象缓存 board.update3D(); // 重绘3D场景层 board.fullUpdate(); // 同步2D投影层显示
内容的提问来源于stack exchange,提问作者Holger
相关产品推荐
相关产品推荐

