比如平台的2D应用打开,背景是桌面默认的3D场景,2D中对表格、树进行滚动,结果3D也跟做缩放响应感觉很不好!
另一方面,在2D、3D叠加的场景,又需要2D中鼠标滚动能够缩放,甚至点击选中2D半透明组件后要让3D不能响应鼠标滚动,没点击选中时需要能直接响应3D场景鼠标缩放!
那么就在图纸加载实例化后,监听鼠标滚动事件,同时判断当前图纸的背景颜色,如果清空(配置中会闪出这项background)那么dm.getBackground()返回undefined,这个时候就调用event.stopPropagation()停止消息冒泡;否则就继续传递给3D场景:
DesktopApp.js:259
注意,这个时候,如果设置背景透明度为0,效果也是透明,但是不返回undefined,同样会阻挡事件响应的!
虽然平台应用的背景色一般不由图纸的background显示,因为一定会拖放一个矩形设置填充并且作为布局吸附的根节点,背景色也只会是这个矩形的颜色!但是如果要让3D场景显示出来,除了这个矩形要透明,图纸颜色也一定要透明才行!因此,判断图纸背景颜色是否有定义(最好是判断是否设置或者设置为透明),来决定是否阻挡2D应用中鼠标滚轮事件到3D场景!
同时,这也就要求即时矩形有背景色看起来也不透光名,但是也要对图纸设置颜色!否则只要图纸清空了背景色,即时当前你矩形铺满不透明,时间照样也会传递到3D场景去!
除了滚轮,还有对2D场景的图元点击、背景平移等,跟上面判断机制一样,当2D背景不透明时是对2D场景图纸的操作,不会传递到3D场景: