ThingJS中如何查询并控制3D场景中的物体? 使用query方法就可以查询到3D场景中的物体,并且对该物体进行控制,比如控制物体沿某一路径移动等等。但是,最好是在场景创建的时候就为每一个物体添加诸如id、name等属性,方便在ThingJS中查询到该物体,并且对该物体进行控制。 具体使用方法如下: - // 查询 id 为 001 的对象集合
- app.query('#001');
- // 查询名称为 car01 的对象集合
- app.query('car01');
- // 查询类型为 Thing 的对象集合
- app.query('.Thing');
- // 查询自定义属性 [prop=value] 的对象集合
- app.query('["userData/power"=60]');
- // 根据正则表达式匹配 name 中包含 'car' 的子物体
- app.query(/car/);
- // 上行代码等同于
- // var reg = new RegExp('car');
- // var cars=app.query(reg);
- // 注意:
- // 通过 query 查询的结果都是满足条件的对象集合(Selector)
- // 如需访问单个对象,可通过下标获取,如
- var obj=app.query('#001')[0];
- // 也可通过循环遍历对象集合
- var objs=app.query('.Thing');
- objs.forEach(function(obj){
- console.log(obj.name)
- })
复制代码
查询出来的物体沿某一路径移动: - app.on('load', function () {
- // 通过 name 查询到场景中名字叫做car01的车的集合,并且选择控制集合中的第一个元素
- var car = app.query('car01')[0];
- new THING.widget.Button('方形路径', function () {
- // 世界坐标系下坐标点构成的数组 关于坐标的获取 可利用「工具」——>「拾取场景坐标」
- var path = [[0, 0, 0], [20, 0, 0], [20, 0, 10], [0, 0, 10], [0, 0, 0]];
- car.movePath({
- orientToPath: true, // 物体移动时沿向路径方向
- path: path, // 路径坐标点数组
- time: 5 * 1000, // 路径总时间 毫秒
- delayTime: 1000, // 延时 1s 执行
- lerpType: null, // 插值类型(默认为线性插值)此处设置为不插值
- // 仅当无循环时 有回调函数
- complete: function (ev) {
- console.log(ev.object.name + "移动结束")
- }
- });
- })
复制代码
|
|
|
|
|
|