Panel的点击切换显示

廖茂彬 2月前 346

点击消防栓可以切换显示,并且点击同一个消防栓可以显示或隐藏panel。

//加载场景代码
var app = new THING.App({
// 场景地址
"url": "http://www.thingjs.com/./uploads/wechat/5buW6IyC5b2s/scene/CB20190121182605",
//背景设置
"skyBox" : "BlueSky"
});

app.on('load', function () {
renderHydrant();//渲染消防栓
});

var panel = null;// 统计面板
//仿造消防栓数据
var demoData = [
{
id: 1,
position: [-60, 0, 0],
angle: 0,
title: null,
wed: null,
},
{
id: 2,
position: [26, 0, 20],
angle: 0,
title: null,
wed: null,
},
{
id: 3,
position: [60, 0, 42],
angle: 0,
title: null,
wed: null,
}
];
var demoDataInfo = [
{
title: '阀门_001',
open: true,
},
{
title: '阀门_002',
open: false,
},
{
title: '阀门_003',
open: true,
}
];

function renderHydrant(){
for(var i=0;i<demoData.length;i++){
// 创建Thing
var obj = app.create({
type: 'Thing',
name: '消防栓_01',
id: demoData[i]['id'],
url: 'http://model.3dmomoda.com/models/298638300036400398675e7e4c35ef61/0/gltf/',
// 模型地址
position: demoData[i]['position'],
// 位置
angle: demoData[i]['angle'],
});
}
}


// 给所有建筑对象,添加鼠标滑过事件
app.on('mouseon', '.Thing', '#0000FF', function (ev) {
    this.style.outlineColor = ev.data;
});
app.on('mouseoff', '.Thing', function (ev) {
    this.style.outlineColor = null;
});

app.on('click', '.Thing', '#0000FF', function (ev) {
var uiAnchor = changeText(this);
});

function changeText(obj){
// 创建widget (绑定数据用)
var panel = new THING.widget.Panel({
// 模板样式
template: 'default',//模板样式提供两个样式 default 和 default2
// 设置面板宽度
width: '160px',
//cornerType 角标样式
//没有角标none,没有线的角标noline,折线角标polyline,直线角标straightline
cornerType: 'polyline'

});

var id_data = obj.id; //获取id值

var dataObj = demoDataInfo[id_data - 1];//根据id值获取到所需的对象;

//绑定物体身上相应的属性数据
panel.addString(dataObj, 'title').caption('名称');
var CheckBoxChange = panel.addBoolean(dataObj, 'open').caption('开关');
CheckBoxChange.on('change',function(ev){
console.log(ev,id_data);
})

// 创建UIAnchor面板
var uiAnchor = app.create({
// 类型
type: 'UIAnchor',
// 父节点设置
parent: obj,
// 要绑定的页面的 element 对象
element: panel.domElement,
// 设置 localPosition 为 [0, 0, 0]
localPosition: [0, 0, 0],
// 指定页面的哪个点放到localPosition位置上(百分比)
pivot: [-0.15, 2.1]
});

// 将对应的 Panel 存下来 便于后续使用
uiAnchor["panel"]=panel;

return uiAnchor;
}


最新回复 (1)
  • ThingJS 2月前
    0 引用 2
    您好,建议参考粮仓的demo。

你可以在 登录 or 注册 后,对此帖发表评论!

返回