分享
查看: 2392|回复: 0

[分享] webgl可视化平台ThingJS之全局绑定事件

[复制链接]

webgl可视化平台ThingJS之全局绑定事件

发表于 2019-11-21 18:02:09 来自 分享 阅读模式 倒序浏览
zzv_icon2392 zzr_icon0 查看全部

对于目前市场来看,3D可视化正在冉冉升起,各种3D方面的第三方库也是应运而生,其中threejs作为目前十分火热的一个第三方js库,同时也有着十分完善的教程,唯一美中不足的就是入门不易,ThingJS作为一个webgl可视化平台,通过封装Threejs,制作了一款适合商业开发者使用的第三方库thingjs,将部分难以实现的操作直接内置了,也因此,大约一个月就能入门使用的threejs,在ThingJS平台中,一个星期就能够入门,并且能够着手开发出一个3D可视化项目,在ThingJS网站中也可以通过“资源中心”查看用户的公开项目(https://store.thingjs.com/?t=projects)。


thingjs之全局绑定事件

thingjs全局绑定事件on(eventType, condition?, userData?, callback, tag?, priority?) ,进行全局绑定则需要使用到app对象,使用app.on()进行事件的全局绑定。

eventType:事件名称,比如load、click、update;

condition:物体类型选择条件,比如.Thing ;

userData: 事件传递自定义数据;

callback,:事件触发的回调函数;

tag:事件标签;

priority:事件优先级(默认值 50 ),数值越大优先级越高,越先响应;

  1. // 绑定 Click 事件
  2. app.on('click',function(ev){
  3. console.log(ev.object.name);
  4. })
  5. // 给场景中所有 Thing 类型对象,绑定 Click 事件
  6. app.on('click','.Thing',function(ev){
  7. console.log(ev.object.name);
  8. })
  9. // 设置事件标签 tag
  10. app.on('click','.Thing',function(ev){
  11. console.log(ev.object.name);
  12. },'我的点击事件01');
  13. // 设置事件优先级
  14. app.on('click',function(ev){
  15. console.log(ev.object.name);
  16. },'我的点击事件02',51)
  17. // 填写 userData 传递参数
  18. app.on('click', { color: '#ff0000' }, function (ev) {
  19. var color = ev.data.color;
  20. console.log(color)
  21. });
复制代码


thingjs之物体查询

thingjs物体查询query(param) → {THING.Selector},可以通过物体的属性、id、name、或者其他自定义属性来查询。我们可以对于查询到的物体进行一些操作,诸如移动,展示顶牌之类的。

  1. // 查询 id 为 001 的对象集合
  2. app.query('#001');
  3. // 查询名称为 car01 的对象集合
  4. app.query('car01');
  5. // 查询类型为 Thing 的对象集合
  6. app.query('.Thing');
  7. // 查询自定义属性 [prop=value] 的对象集合
  8. app.query('["userData/power"=60]');
  9. // 根据正则表达式匹配 name 中包含 'car' 的子物体
  10. app.query(/car/);
  11. // 上行代码等同于
  12. // var reg = new RegExp('car');
  13. // var cars=app.query(reg);
  14. // 注意:
  15. // 通过 query 查询的结果都是满足条件的对象集合(Selector)
  16. // 如需访问单个对象,可通过下标获取,如
  17. var obj=app.query('#001')[0];
  18. // 也可通过循环遍历对象集合
  19. var objs=app.query('.Thing');
  20. objs.forEach(function(obj){
  21. console.log(obj.name)
  22. })
复制代码

webgl可视化平台ThingJS使用当下热门的 Javascript 语言进行开发,低门槛快速开发,很适合前端工程师线上开发创作。大家可以大胆一试,有任何问题也可以咨询ThingJS技术交流群,群号为1057489240。

avatar
游客~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

130700ppkpl8x3t7tt1b1t