首页 > 大数据 > 可视化 > 从零开始学习3D可视化之拾取

// 每一帧判断拾取的物体是否发生变化
app.on('update', function () {
if (app.picker.isChanged()) {
console.clear();
// 日志窗口输出当前被pick的物体
if (app.picker.objects[0]) {
console.log('当前拾取的物体 ' + app.picker.objects[0].name);
}
// 打印之前被pick的物体
if (app.picker.previousObjects[0]) {
console.log('之前拾取的物体 ' + app.picker.previousObjects[0].name);
}
}
});

// 鼠标拾取物体显示边框
app.on(THING.EventType.MouseEnter, '.Thing' ,function(ev) {
ev.object.style.outlineColor = '#FF0000';
});
// 鼠标离开物体边框取消
app.on(THING.EventType.MouseLeave,'.Thing', function(ev) {
ev.object.style.outlineColor = null;
});
// 由于框选比较消耗性能,因此预先设置框的“候选集”,只在候选集中框选
var things = app.query('.Thing');
app.picker.areaCandidates = things;
// 启动框选 传入 鼠标按下时开始框选的屏幕坐标
app.picker.startAreaPicking({
x: x,
y: y
});
//结束框选
app.picker.endAreaPicking();

// 修改进入层级选择设置
// {String} ev.level 当前层级标识枚举值 可通过 THING.LevelType 获取枚举值,如建筑层级标识为 THING.LevelType.Building
// {THING.BaseObject} ev.object 当前层级对象(将要进入的层级对象)
// {THING.BaseObject} ev.current 当前层级对象(将要进入的层级对象)
// {THING.BaseObject} ev.previous 上一层级对象(离开的层级对象)
app.on(THING.EventType.EnterLevel, '.Building', function (ev) {
app.picker.pickedResultFunc = function (obj) {
return obj;
}
}, 'customLevelPickedResultFunc');
// 暂停建筑层级的默认选择行为
app.pauseEvent(THING.EventType.EnterLevel, '.Building', THING.EventTag.LevelPickedResultFunc);
————————————————
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980539/viewspace-2777753/ ,如需转载,请注明出处,否则将追究法律责任。