【ThingJS】类型转换以及注册

2023-11-23 03:36
文章标签 注册 类型转换 thingjs

本文主要是介绍【ThingJS】类型转换以及注册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

目前国家提倡加快数字化发展,建设数字中国,并于今年2月份中共中央、国务院印发的《数字中国建设整体布局规划》中明确,数字中国建设按照“2522”的整体框架进行布局。其中提到“构建以数字孪生流域为核心的智慧水利体系”,可以说数字化发展是必须进行的,数字孪生是基于数字化的基础上,高纬度地监控和真实地还原实时场景,并提前预防各种可能发生的危险。以水利体系为例,通过数字孪生监控流域,可以观察地方乃至全国水域交汇情况,从而确定开闸放闸给下流带来地减少经济损失。

类型转换以及注册

在 ThingJS 低代码开发中,可以利用模型类型来定义不同模型的属性和行为,从而达到完成预想的效果。本文将会介绍如何使用自定义类在场景中创建模型。

加载场景

var app = new THING.App({url: 'https://www.thingjs.com/static/models/factory', background: '#000000',
});

url 场景地址
background 场景背景,null 即为透明背景

定义和注册自定义类

class Cabinet extends THING.Thing {constructor(app) {super(app);}openDoor() {this.playAnimation('_defaultAnim_');}
}
THING.factory.registerClass('Cabinet', Cabinet);

定义一个机柜类: Cabinet

在类中为机柜新增了一个开门的行为:openDoor()

将该自定义类与类型进行绑定:THING.factory.registerClass('Cabinet', Cabinet)

这里顺便提一下,通过ThingJS API内置的动画函数:playAnimation,可以调用模型的 _defaultAnim_动画,在后面的内容中,会详细说明如何使用动画以及模型如何创建动画。

创建模型

app.create({type: 'Cabinet',url: '/api/models/95A8D3F0552D496192031C4AAF9675A5/0/gltf/',position: [0, 0, 0],complete: function() {this.openDoor();console.log(this.animationNames)}
})

模型与自定义类通过 typeTHING.factory.registerClass 第一个参数进行关联,并且自定义类调用成功,场景信息里面模型的名字不再是 Thing ,而是 Cabinet ,自定义类注册成功,可以使用其定义的行为 openDoor(),通过 animationNames 可以判断是否有该动画名称。

在这里插入图片描述

在上面的图中,其只有一个动画 _defaultAnim_ ,这是开门动画,上图为机柜开门的状态。

类型转换

app.query(/car/).forEach(item=>{THING.Utils.convertObjectClass(item, "Cabinet");
})

通过正则表达式查询模型 name 中包含 car 字符串的模型,并将其转换为 Cabinet 自定义类:THING.Utils.convertObjectClass(item, "Cabinet")

在这里插入图片描述

完整案例代码

// 加载场景代码 
var app = new THING.App({url: 'https://www.thingjs.com/static/models/factory',  // 场景地址background: '#000000',env: 'Seaside',complete: function() {// 正则查询 name 包含 car 字符串的模型app.query(/car/).forEach(item=>{// 转化类型THING.Utils.convertObjectClass(item, "Cabinet");})}
});/*** 自定义类:机柜*/
class Cabinet extends THING.Thing {constructor(app) {super(app);}/*** 行为:开门*/openDoor() {this.playAnimation('_defaultAnim_');}
}
// 注册自定义类
THING.factory.registerClass('Cabinet', Cabinet);// 创建模型
app.create({type: 'Cabinet',url: '/api/models/95A8D3F0552D496192031C4AAF9675A5/0/gltf/',position: [0, 0, 0],complete: function() {// 聚焦摄像头到物体上面app.camera.flyTo({time: 1000,target: this,})// 调用自定义类开门行为this.openDoor();}
})

参考资料

  1. 官网示例【模型】【自定义类】:https://www.thingjs.com/guide/?m=sample

这篇关于【ThingJS】类型转换以及注册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415063

相关文章

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

Chapter 13 普通组件的注册使用

欢迎大家订阅【Vue2+Vue3】入门到实践 专栏,开启你的 Vue 学习之旅! 文章目录 前言一、组件创建二、局部注册三、全局注册 前言 在 Vue.js 中,组件是构建应用程序的基本单元。本章详细讲解了注册和使用 Vue 的普通组件的两种方式:局部注册和全局注册。 本篇文章参考黑马程序员 一、组件创建 ①定义 Vue 组件是一种具有特定功能的 Vue 实

c++11工厂子类实现自注册的两种方法

文章目录 一、产品类构建1. 猫基类与各品种猫子类2.狗基类与各品种狗子类 二、工厂类构建三、客户端使用switch-case实现调用不同工厂子类四、自注册方法一:公开注册函数显式注册五、自注册方法二:构造函数隐形注册总结 一、产品类构建 1. 猫基类与各品种猫子类 class Cat {public:virtual void Printer() = 0;};class

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念,以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容,主要就是BTP的实际操作流程,比如账号注册,登录,BTP集成开发环境的搭建这方面。 目录 1,账号注册 2,BTP登录URL 3,如何在BTP上进行开发? 以下是详细内容。 1,账

吐血整理nacos 作为springcloud的配置中心和注册中心

吐血整理nacos 作为配置中心和注册中心 环境版本nacos 版本 nacos启动单机模式启动配置数据库 Spring cloud 连接注册Nacos配置中心导入依赖 注册中心 环境版本 SpringBoot版本SpringCloud版本cloud Alibaba版本2.6.132021.0.52021.0.5.0 参照依据 spring-cloud-alibab 对应

【中国国际航空-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 所以大部分网站及App 都采取图形验证码或滑动验证码等交互解决方案, 但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评, 图形验证及交互验证方式的安全性到底如

spring cloud eureka注册中心搭建

1、创建maven项目,在pom.xml 中加入相应jar包 2、在src/main/resources中创建application.properties文件,内容为 spring.application.name=eureka-server   // 注册中心服务名称 server.port=8761 // 注册中心服务端口 # 本身注册中心是一个服务但是不需要注册自己 eureka.c

【oracle CLOB】ORACLE CLOB 类型转换为字符串

在ORACLE 中存储 大量 文本 超过了 3000个汉字 varchar 装不下 迫不得已使用了 : CLOB 类型 写sql 时如果字段是CLOB类型,必须转换为类型。 CLOB 类型转换为字符串: dbms_lob.substr(FILTER_TEXT,100000) select to_char(GMT_CREATE,'yyyy-mm-dd') as M1,dbms_lob.sub