-
-
添加对象作为自己的孩子
Parameters:
| Name |
Type |
Description |
object |
THING.Object3D
|
待添加对象 |
options |
object
|
选项
Properties
| Name |
Type |
Attributes |
Default |
Description |
subNodeName |
string
|
|
|
子节点名称 |
localPosition |
Array.<number>
|
|
|
相对父物体的位置 |
localAngles |
Array.<number>
|
|
|
相对父物体的旋转角度 |
attachMode |
boolean
|
<optional>
|
true
|
表示是否保持世界坐标系下的位置不变 |
ignoreScale |
boolean
|
<optional>
|
false
|
是否忽略缩放 |
indexOfParent |
boolean
|
<optional>
|
|
对象在子节点中的索引 |
|
Returns:
boolean
- 添加成功返回true,否则返回false
- Overrides:
Example
// Keep local transform of box to be added to object
object.add(new THING.Box({ localPosition: [0, 10, 0]}), { attachMode: false });
-
-
添加组件
Parameters:
| Name |
Type |
Description |
component |
THING.BaseComponent
|
object
|
组件对象类名或者组件对象实例 |
name |
string
|
组件名称 |
args? |
object
|
初始化具体组件的参数对象 如果第一个参数是一个类名而不是一个实例,添加时会根据初始化参数和类名创建一个组件实例 |
Returns:
boolean
- 是否成功 如果给obj添加了一个name为myComponent的组件,添加成功后,可通过obj.myComponent获取该组件对象
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'myComponent');
// @expect(obj.myComponent != null)
-
-
绑定子节点,绑定后将自动根据子节点更新世界坐标。绑定后位置、角度和缩放会锁定。
Parameters:
| Name |
Type |
Description |
target |
THING.Object3D
|
目标对象。 |
subNodeName |
string
|
子节点名称。 |
Returns:
boolean
- 是否绑定成功。
- Overrides:
Example
let box = new THING.Box();
box.bindSubNode(car, 'chair');
-
-
播放动画,播放时不会影响该物体正在播放的其他动画
Returns:
void
- 无返回值
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.blendAnimation({ name: 'Walk', loopType: "Repeat" });
let ret = UinoSpaceman.isAnimationPlaying('Walk');
// @expect(ret == true);
});
-
-
克隆对象
Parameters:
| Name |
Type |
Description |
recursive |
boolean
|
是否克隆所有的孩子 |
parent |
THING.BaseObject
|
指定克隆出的对象父物体 默认用app.root作为父物体 |
options |
object
|
选项 |
- Overrides:
Example
// Clone the object and move up
let otherObject = object.clone();
otherObject.translateY(10);
-
-
拷贝对象(不拷贝uuid和parent),拷贝对象会重新加载资源
Returns:
Promise.<any>
- 返回一个Promise对象
- Overrides:
Example
// 从查询结果拷贝对象
let sourceObject = app.query('#master')[0];
if (sourceObject) {
object.copy(sourceObject);
}
-
-
销毁物体
Returns:
boolean
- 返回一个布尔值,表示是否销毁成功
- Overrides:
Example
let object = new THING.BaseObject();
// @expect(object.destroyed == false);
object.destroy();
// @expect(object.destroyed == true)
-
-
禁用实例化节点。
Returns:
boolean
- 是否禁用成功
- Overrides:
Example
// 禁用实例化渲染
object.disableInstancing();
-
-
获取距离另一个Object3D对象或者一个三维坐标的距离
Parameters:
| Name |
Type |
Description |
target |
THING.Object3D
|
Array.<number>
|
目标物体或者世界坐标 |
Returns:
number
- 距离
- Overrides:
Example
let distance = object.distanceTo([0, 10, 0]);
if (distance > 5000) {
console.log('object is so far from specified position');
}
-
-
启用实例化节点(启用后将使主体节点不可见)。
Returns:
Promise.<boolean>
- 是否启用成功
- Overrides:
Example
// 启用实例化渲染,设置最大数量为31104个实例
object.enableInstancing({
maxNumber: 31104,
number: 0,
matrices: [], // 包含所有实例的变换矩阵
pickedIds: pickedIds, // 可选,包含所有实例的拾取ID
colors: colors // 可选,包含所有实例的颜色
});
-
-
对象渐现
Parameters:
| Name |
Type |
Description |
param |
LerpArgs
|
The parameters. 插值参数 |
- Overrides:
Example
object.fadeIn({
duration: 2000,
onComplete: () => {
console.log('Fade in completed');
}
});
-
-
异步将对象渐现。
Parameters:
| Name |
Type |
Description |
param |
LerpArgs
|
The parameters. 插值参数 |
Returns:
Promise
- 一个在渐现完成时解析的承诺。
- Overrides:
Example
await object.fadeInAsync({
duration: 2000
});
-
-
对象渐隐
Parameters:
| Name |
Type |
Description |
param |
LerpArgs
|
The parameters. 插值参数 |
- Overrides:
Example
object.fadeOut({
duration: 2000,
onComplete: () => {
console.log('Fade out completed');
}
});
-
-
异步将对象渐隐。
Parameters:
| Name |
Type |
Description |
param |
LerpArgs
|
The parameters. 插值参数 |
Returns:
Promise
- 一个在渐隐完成时解析的承诺。
- Overrides:
Example
await object.fadeOutAsync({
duration: 2000
});
-
-
根据目标对象计算最佳位置 一般用于调整摄像机最佳视角
注意参数中 times 和 duration 不起作用
Returns:
boolean
- 是否计算成功
- Overrides:
Example
app.camera.fit(otherTarget);
-
-
物体在特定时间内飞行到特定位置
Returns:
boolean
- 是否飞行成功
- Overrides:
Example
object.flyTo(baseObject);//飞到物体
object.flyTo({
target: otherTarget,
horzAngle: 0,
vertAngle: 45
});
object.flyTo({
position: [0,10,0],
target:[0,0,0],
up:[0,0,1]
});
-
-
获取包围盒
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
recursive |
boolean
|
<optional>
|
true
|
计算aabb时是否考虑孩子 |
updateMatrix |
boolean
|
<optional>
|
true
|
计算aabb时是否更新自己和孩子的矩阵 |
local |
boolean
|
<optional>
|
false
|
计算出的aabb的轴向是基于父物体坐标系,还是相对于世界坐标系(计算出的包围盒是不同的) |
- Overrides:
Example
let boundingBox = object.getAABB();
console.log(boundingBox);
-
-
获取所有组件
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'component1');
obj.addComponent(new THING.BaseComponent(), 'component2');
let components = obj.getAllComponents();
// @expect(components.length == 2)
-
-
根据名称获取动画信息
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
let animation = UinoSpaceman.getAnimation('Walk');
let ret = animation.name == 'Walk';
// @expect(ret == true);
});
-
-
获取动画播放的方向(正向/反向)获取动画的方向类型。
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
let direction = UinoSpaceman.getAnimationDirectionType('Walk');
let ret = direction == 'Normal';
// @expect(ret == true);
});
-
-
获取动画速度
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Returns:
number
- 播放速度
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat", speed: 10 });
let speed = UinoSpaceman.getAnimationSpeed('Walk');
let ret = speed == 10;
// @expect(ret == true);
});
-
-
根据名称获取动画播放状态
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let state = UinoSpaceman.getAnimationState('Walk');
let ret = state == 'Playing';
// @expect(ret == true);
});
-
-
获取动画权重
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Returns:
number
- 播放权重
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat", speed: 10 });
let weight = UinoSpaceman.getAnimationWeight('Walk');
let ret = weight == 0;
// @expect(ret == true);
});
-
-
根据name获取属性值
Parameters:
| Name |
Type |
Default |
Description |
key |
string
|
|
属性名称,支持嵌套,例如获取object.a.b.c 可以使用object.getAttribute('a/b/c') |
separator |
string
|
/
|
分隔符,默认是'/' |
Returns:
*
- 返回指定属性的值
- Overrides:
Example
let object = new THING.BaseObject();
object.userData['power'] = 100;
let power = object.getAttribute('userData/power');
// @expect(power == 100)
-
-
根据名称获取组件对象
Parameters:
| Name |
Type |
Description |
name |
string
|
组件名称 |
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'myComponent');
let component = obj.getComponentByName('myComponent');
// @expect(component != null)
-
-
根据类型获取组件对象 返回符合条件的第一个组件
Parameters:
| Name |
Type |
Description |
type |
*
|
组件类型 |
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'myComponent');
let component = obj.getComponentByType(THING.BaseComponent);
// @expect(component != null)
-
-
根据类型获取组件对象的集合
Parameters:
| Name |
Type |
Description |
type |
*
|
组件类型 |
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'component1');
obj.addComponent(new THING.BaseComponent(), 'component2');
let components = obj.getComponentsByType(THING.BaseComponent);
// @expect(components.length == 2)
-
-
获取指定类型的事件。
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型,为null表示获取所有事件。 |
- Overrides:
Example
let object = new THING.BaseObject();
let events = object.getEvents();
// @expect(events.length > 0);
-
-
获取视锥剔除状态。
Returns:
boolean
- 视锥剔除状态。
- Overrides:
Example
let frustumCulled = object.getFrustumCulled();
if (frustumCulled) {
console.log('object is frustum culled');
}
-
-
获取实例化数量。
Returns:
number
- 实例化数量
- Overrides:
Example
// 获取当前实例的数量
const count = object.getInstancedCount();
console.log('Current instance count:', count);
-
-
获取实例化节点信息。
- Overrides:
Example
// 获取实例化渲染的当前参数
const info = object.getInstancing();
console.log(info.number); // 当前实例数量
console.log(info.maxNumber); // 最大实例数量
-
-
获取实例化属性。
Parameters:
| Name |
Type |
Description |
name |
string
|
名称。 |
Returns:
any
- 实例化属性
- Overrides:
Example
// 获取颜色属性的状态
const useColors = object.getInstancingAttribute('Colors');
console.log('Using colors:', useColors);
-
-
获取实例化清除颜色。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
Returns:
boolean
- 是否获取成功
- Overrides:
Example
// 获取第一个实例的清除颜色
const clearOutColor = object.getInstancingClearOutColor(0);
console.log('Instance 0 clear out color:', clearOutColor);
-
-
获取实例化漫反射UV变换。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
target |
Array.<number>
|
目标。 |
Returns:
Array.<number>
- 漫反射UV变换
- Overrides:
Example
// 获取第一个实例的漫反射UV变换
const diffuseUVTransform = object.getInstancingDiffuseUVTransform(0);
console.log('Instance 0 diffuse UV transform:', diffuseUVTransform);
-
-
获取按索引的实例化矩阵。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
target? |
Array.<number>
|
目标。 |
Returns:
Array.<number>
- 实例化矩阵
- Overrides:
Example
// 获取第一个实例的变换矩阵
const matrix = object.getInstancingMatrix(0);
console.log('Instance 0 matrix:', matrix);
-
-
获取按索引的实例化可见性。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
Returns:
boolean
- 是否获取成功
- Overrides:
Example
// 检查第一个实例是否可见
const visible = object.getInstancingVisible(0);
console.log('Instance 0 visible:', visible);
-
-
获取旋转后的包围盒
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
recursive |
boolean
|
<optional>
|
true
|
计算obb时是否考虑孩子 |
updateMatrix |
boolean
|
<optional>
|
true
|
计算obb时是否更新自己和孩子的矩阵 |
local |
boolean
|
<optional>
|
false
|
描述obb时的参数是基于父物体还是世界坐标系(算出的包围盒是一样的,只是描述不同) |
- Overrides:
Example
let orientedBox = object.getOBB();
console.log(orientedBox);
-
-
获取所有正在播放的动画
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let animations = UinoSpaceman.getPlayingAnimations();
let ret = animations[0].state == 'Playing';
// @expect(ret == true);
});
-
-
获取渲染顺序。
Returns:
number
- 渲染顺序
- Overrides:
Example
let renderOrder = object.renderOrder;
console.log(renderOrder);
-
-
获取visible的状态
Returns:
boolean
- 可见状态。
- Overrides:
Example
let visible = object.getVisible();
if (visible) {
console.log('object is showing');
}
-
-
根据动画名称检查该对象身上是否有这个动画
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Returns:
boolean
- 返回一个布尔值,表示是否有指定名称的动画
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
let ret = UinoSpaceman.hasAnimation('Walk');
// @expect(ret == true);
});
-
-
检查是否含有属性名为name的属性
Parameters:
| Name |
Type |
Default |
Description |
name |
string
|
|
属性名称,支持嵌套,例如查询object.a.b.c 可以使用object.hasAttribute('a/b/c') |
separator |
string
|
/
|
分隔符,默认是'/' |
Returns:
boolean
- 返回一个布尔值,表示是否存在指定的属性
- Overrides:
Example
let object = new THING.BaseObject();
object.userData['power'] = 100;
let ret = object.hasAttribute('userData/power');
// @expect(ret == true)
-
-
判断是否含有特定名称的组件
Parameters:
| Name |
Type |
Description |
name |
string
|
组件名称 |
Returns:
boolean
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'myComponent');
let ret = obj.hasComponent('myComponent')
// @expect(ret == true)
-
-
触发并等待事件完成
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型。 |
condition |
string
|
object
|
事件条件 或 事件数据。 |
data |
object
|
string
|
事件数据 或 事件标签。 |
tagName |
string
|
事件标签名称。 |
Returns:
*
- 返回一个Promise对象,包含指定类型的事件
- Overrides:
-
-
该名称的动画是否正在播放
Returns:
boolean
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret = UinoSpaceman.isAnimationPlaying('Walk');
// @expect(ret == true);
});
-
-
加载资源 返回一个Promise对象
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
recursive |
boolean
|
<optional>
|
true
|
是否加载所有孩子的资源 |
options |
ResourceResult
|
<optional>
|
{}
|
加载选项 |
Returns:
Promise.<any>
- 返回一个Promise对象
- Overrides:
Example
// 等待物体加载资源完成
await object.loadResource();
-
-
相对于父物体的坐标转为世界坐标
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
position |
Array.<number>
|
|
|
相对于父物体的坐标 |
ignoreScale |
boolean
|
<optional>
|
false
|
转换时是否忽略缩放 默认不忽略 |
Returns:
Array.<number>
- 返回世界坐标
- Overrides:
Example
let parentObj = new THING.Object3D({
position: [0, 5, 0]
});
let childObj = new THING.Object3D({
localPosition: [0, 10, 0],
parent: parentObj
});
let worldPos = childObj.localToWorld([0, -5, 0]);
// print [0, 0, 0]
console.log(worldPos);
-
-
看对象或一个目标位置
Returns:
boolean
- 是否看成功
- Overrides:
-
-
开启/关闭批量渲染模式。
Parameters:
| Name |
Type |
Default |
Description |
value |
boolean
|
true
|
是否开启 |
options |
object
|
|
选项
Properties
| Name |
Type |
Attributes |
Default |
Description |
renderMode |
string
|
<optional>
|
'InstancedRendering'
|
渲染模式 InstancedRendering/SharedRenderingSharedRendering代表材质共用但是drawCall还是多个 InstancedRendering代表材质共用,drawCall只有一次 |
|
Returns:
boolean
- 是否开启成功
- Overrides:
Example
// 开启批量渲染模式
if (object.makeInstancedDrawing()) {
console.log('Enable instanced drawing');
}
-
-
对象沿路径移动
Parameters:
| Name |
Type |
Description |
value |
Array.<Array.<number>>
|
组成路径的坐标的集合 |
param |
MovePathLerpArgs
|
移动参数 |
Returns:
boolean
- 是否移动成功
- Overrides:
Example
let path = [
[100, 0, 0],
[100, 0, 100],
[0, 0, 100],
[0, 0, 0],
];
object.movePath(path.map(point => object.selfToWorld(point)), {
duration: 5 * 1000,
loopType: THING.LoopType.Repeat,
});
object.movePath({
path: path.map(point => object.selfToWorld(point)),
duration: 5 * 1000,
loopType: THING.LoopType.Repeat,
});
-
-
对象沿路径移动 返回一个Promise对象
Parameters:
| Name |
Type |
Description |
value |
Array.<Array.<number>>
|
组成路径的坐标的集合 |
param |
MovePathLerpArgs
|
移动参数 |
Returns:
Promise.<any>
- 返回一个Promise对象
- Overrides:
Example
let path = [
[100, 0, 0],
[100, 0, 100],
[0, 0, 100],
[0, 0, 0],
];
await object.movePathAsync(path.map(point => object.selfToWorld(point)), {
duration: 5 * 1000
});
await object.movePathAsync({
path: path.map(point => object.selfToWorld(point)),
duration: 5 * 1000
});
-
-
对象移动到目标位置
Returns:
boolean
- 是否移动成功
- Overrides:
Example
object.moveTo(object.selfToWorld(THING.Math.randomVector([-200, -5, -200], [200, 5, 200])), {
loopType: THING.LoopType.PingPong,
duration: THING.Math.randomInt(1000, 5000)
});
object.moveTo({
to: object.selfToWorld(THING.Math.randomVector([-200, -5, -200], [200, 5, 200])),
duration: THING.Math.randomInt(1000, 5000)
})
-
-
注销事件
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型 |
condition |
string
|
注册事件的条件 |
tag |
string
|
事件的tag |
- Overrides:
Example
let object = new THING.BaseObject();
let markOff = 0;
object.on('testOff', function(ev) {
markOff = 1;
});
object.trigger('testOff');
// @expect(markOff == 1);
markOff = 0;
object.off('testOff');
object.trigger('testOff');
// @expect(markOff == 0);
-
-
注册事件
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型 |
condition |
string
|
注册事件前先进行查询,对符合条件的对象进行注册 |
callback |
EventCallback
|
事件回调函数 |
tag |
string
|
事件的tag |
priority |
number
|
优先级 默认0 |
options |
ObjectEventOptions
|
事件参数 |
- Overrides:
Example
let object = new THING.BaseObject();
let mark = 0;
object.on('click', function(ev){
mark = 1;
}, 'MyClick');
object.trigger('click');
// @expect(mark == 1)
let mark2 = 0;
object.on('click', '.Box', function(ev){
mark2 = 1;
}, 'MyClick');
// @expect(mark2 == 0)
-
-
注册一次性的事件,此事件响应只会触发一次,触发后会被自动注销
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型 |
condition |
string
|
注册事件前先进行查询,对符合条件的对象进行注册 |
callback |
EventCallback
|
事件回调函数 |
tag |
string
|
事件的tag |
priority |
number
|
优先级 默认0 |
options |
ObjectEventOptions
|
事件参数 |
- Overrides:
Example
let object = new THING.BaseObject();
let markOnce = 0;
object.once('testOnce', function(ev) {
markOnce = 1;
});
object.trigger('testOnce');
// @expect(markOnce == 1);
markOnce = 0;
object.trigger('testOnce');
// @expect(markOnce == 0);
-
-
暂停所有动画
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret1 = UinoSpaceman.isAnimationPlaying('Walk');
UinoSpaceman.pauseAllAnimations();
let ret2 = UinoSpaceman.getAnimationState() == 'Paused';
// @expect(ret1 == true && ret2 == true);
});
-
-
暂停动画(暂停名称匹配的所有动画)
Parameters:
| Name |
Type |
Description |
name |
string
|
Array.<string>
|
动画名称或动画名称的数组 |
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret1 = UinoSpaceman.isAnimationPlaying('Walk');
UinoSpaceman.pauseAnimation('Walk');
let ret2 = UinoSpaceman.getAnimationState() == 'Paused';
// @expect(ret1 == true && ret2 == true);
});
-
-
暂停事件
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型 |
condition |
string
|
注册事件的条件 |
tag |
string
|
事件的tag |
- Overrides:
Example
let object = new THING.BaseObject();
let markPause = 0;
object.on('testPause', function(ev) {
markPause = 1;
});
object.trigger('testPause');
// @expect(markPause == 1);
markPause = 0;
object.pauseEvent('testPause');
object.trigger('testPause');
// @expect(markPause == 0);
app.on('test', ".Box", (e) => {
console.log(e.object)
}, 'MyTag');
app.pauseEvent('test', '.Box', 'MyTag');
-
-
暂停淡入淡出动作。
- Overrides:
Example
object.pauseFading();
-
-
暂停飞行
- Overrides:
Example
object.pauseFlying();
-
-
暂停移动
- Overrides:
Example
object.pauseMoving();
-
-
暂停旋转
- Overrides:
Example
object.pauseRotating();
-
-
暂停缩放动画
Returns:
boolean
- 是否暂停成功
- Overrides:
Example
object.pauseScaling();
-
-
暂停UV变化
Returns:
boolean
- 是否暂停成功
- Overrides:
Example
object.pauseUVTransform(THING.ImageSlotType.Map);
-
-
播放动画,会停止所有其他正在播放的动画
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret = UinoSpaceman.isAnimationPlaying('Walk');
// @expect(ret == true);
});
-
-
根据条件查询孩子 返回所有满足条件的对象集合
- Overrides:
Example
let object = new THING.BaseObject();
let child= new THING.BaseObject({parent: object});
child.userData = {power: 1000};
let children = object.children.query('[userData/power>100]');
let ret = children.length == 1;
// @expect(ret == true)
-
-
根据条件查询孩子 返回所有满足条件的对象集合(忽略 queryable 属性)
- Overrides:
Example
let object = new THING.BaseObject();
let child= new THING.BaseObject({parent: object});
child.userData = {power: 1000};
let children = object.children.queryAll('[userData/power>100]');
let ret = children.length == 1;
// @expect(ret == true)
-
-
根据孪生体类型查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.BaseObject({parent: object});
child1.dtType = 'Equipment';
let child2= new THING.BaseObject({parent: object});
let result = object.queryByDTType('Equipment');
let ret = result[0].dtType == 'Equipment';
//@expect(ret == true)
-
-
根据id查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.BaseObject({parent: object});
child1.id = '10000';
let child2= new THING.BaseObject({parent: object});
let result = object.queryById('10000');
let ret = result[0].id == '10000';
//@expect(ret == true)
-
-
根据名称查询孩子
Parameters:
| Name |
Type |
Description |
condition |
string
|
查询条件 |
options |
ObjectQueryOptions
|
查询参数 主要包括是否递归查询和是否包含自身 |
- Overrides:
Example
let object = new THING.BaseObject();
let child= new THING.BaseObject({parent: object, name: 'liming'});
let result = object.queryByName('liming');
let ret = result[0].name == 'liming';
// @expect(ret == true)
-
-
根据正则表达式查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.BaseObject({parent: object, name: 'car1'});
let child2= new THING.BaseObject({parent: object, name: 'car2'});
let result = object.queryByRegExp(/car/);
let ret = result.length == 2;
//@expect(ret == true)
-
-
根据tag查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.Object3D({parent: object, name: 'car1'});
child1.tags.add('testCar');
let child2= new THING.BaseObject({parent: object, name: 'car2'});
let result = object.queryByTags('testCar');
let ret = result.length == 1;
//@expect(ret == true)
-
-
根据类型查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.Box({parent: object, id: '10000'});
let child2= new THING.BaseObject({parent: object});
let result = object.queryByType('Box');
let ret = result[0].id == '10000';
//@expect(ret == true)
-
-
根据uuid查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.BaseObject({parent: object, uuid: '1000'});
let child2= new THING.BaseObject({parent: object});
let result = object.queryByUUID('1000');
let ret = result[0].uuid == '1000';
//@expect(ret == true)
-
-
根据userData(用户数据)查询孩子
- Overrides:
Example
let object = new THING.BaseObject();
let child1= new THING.Box({parent: object});
child1.userData['power'] = 100;
let child2= new THING.BaseObject({parent: object});
let result = object.queryByUserData('power=100');
let ret = result[0].userData.power == 100;
//@expect(ret == true)
-
-
射线检测,检测射线是否与对象相交
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
ray |
RaycastInfo
|
|
|
射线信息 |
recursive |
boolean
|
<optional>
|
true
|
是否对所有子对象进行检测 |
- Overrides:
Example
// 示例1: 创建一个向前的射线
let results = object.raycast({
origin: [0, 0, 0], // 起点
direction: [0, 0, 1] // 向前
});
if (results.length) {
let nearest = results[0]; // 获取最近的相交点
console.log('击中物体:', nearest.object);
console.log('击中位置:', nearest.position);
console.log('击中距离:', nearest.distance);
}
// 示例2: 创建一个指向目标的射线
let direction = THING.Math.normalizeVector(
THING.Math.subVector(targetPos, startPos) // 目标点减起点
);
console.log('从起点:', startPos, '朝向:', direction, '进行射线检测');
let hits = object.raycast({
origin: startPos,
direction: direction
});
console.log('射线检测结果:', hits);
-
-
从自己的孩子中移除BaseObject
Returns:
boolean
- 返回一个布尔值,表示是否移除成功
- Overrides:
Example
let parent = new THING.BaseObject();
let child = new THING.BaseObject();
parent.add(child);
let ret = child.isChildOf(parent);
// @expect(ret == true);
parent.remove(child);
ret = child.isChildOf(parent);
// @expect(ret == false);
-
-
移除所有组件
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'component1');
obj.addComponent(new THING.BaseComponent(), 'component2');
obj.removeAllComponents();
// @expect(obj.components.size == 0)
-
-
根据名称移除组件
Parameters:
| Name |
Type |
Description |
name |
string
|
The name. 组件名称 |
- Overrides:
Example
let obj = new THING.BaseObject();;
obj.addComponent(new THING.BaseComponent(), 'myComponent');
obj.removeComponent('myComponent');
// @expect(obj.components.size == 0)
-
-
恢复所有动画
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret1 = UinoSpaceman.isAnimationPlaying('Walk');
UinoSpaceman.pauseAnimation('Walk');
let ret2 = UinoSpaceman.getAnimationState() == 'Paused';
UinoSpaceman.resumeAllAnimations();
let ret3 = UinoSpaceman.isAnimationPlaying('Walk');
// @expect(ret1 == true && ret2 == true && ret3 == true);
});
-
-
恢复动画(恢复名称匹配的所有动画)
Parameters:
| Name |
Type |
Description |
name |
string
|
Array.<string>
|
动画名称或动画名称的数组 |
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret1 = UinoSpaceman.isAnimationPlaying('Walk');
UinoSpaceman.pauseAnimation('Walk');
let ret2 = UinoSpaceman.getAnimationState() == 'Paused';
UinoSpaceman.resumeAnimation('Walk');
let ret3 = UinoSpaceman.isAnimationPlaying('Walk');
// @expect(ret1 == true && ret2 == true && ret3 == true);
});
-
-
恢复事件
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型 |
condition |
string
|
注册事件的条件 |
tag |
string
|
事件的tag |
- Overrides:
Example
let object = new THING.BaseObject();
let markResume = 0;
object.on('testResume', function(ev) {
markResume = 1;
});
object.trigger('testResume');
// @expect(markResume == 1);
markResume = 0;
object.pauseEvent('testResume');
object.trigger('testResume');
// @expect(markResume == 0);
object.resumeEvent('testResume');
object.trigger('testResume');
// @expect(markResume == 1);
app.on('test', ".Box", (e) => {
console.log(e.object)
}, 'MyTag');
app.pauseEvent('test', '.Box', 'MyTag');
app.resumeEvent('test', '.Box', 'MyTag');
-
-
恢复淡入淡出动作。
- Overrides:
Example
object.resumeFading();
-
-
恢复飞行
- Overrides:
Example
object.resumeFlying();
-
-
恢复移动
- Overrides:
Example
object.resumeMoving();
-
-
恢复旋转
- Overrides:
Example
object.resumeRotating();
-
-
恢复缩放动画
Returns:
boolean
- 是否恢复成功
- Overrides:
Example
object.resumeScaling();
-
-
恢复UV变化
Returns:
boolean
- 是否恢复成功
- Overrides:
Example
object.resumeUVTransform(THING.ImageSlotType.Map);
-
-
等同于rotateOnAxis
Parameters:
| Name |
Type |
Description |
axis |
Array.<number>
|
在自身坐标系下的轴向信息 |
angle |
number
|
旋转角度 |
lerpParam |
LerpArgs
|
插值信息 |
Returns:
boolean
- 是否旋转成功
- Overrides:
Example
let box = new THING.Box();
box.rotate(THING.Utils.xAxis, 45);
// @expect(THING.Math.equalsVector3([45, 0, 0], box.angles) == true);
-
-
绕固定轴旋转特定角度
Parameters:
| Name |
Type |
Description |
axis |
Array.<number>
|
在自身坐标系下的轴向信息 |
angle |
number
|
旋转角度 |
lerpParam |
LerpArgs
|
插值信息 |
Returns:
boolean
- 是否旋转成功
- Overrides:
Example
let box = new THING.Box();
box.rotateOnAxis(THING.Utils.xAxis, 45);
//@expect(THING.Math.equalsVector3([45, 0, 0], box.angles) == true);
-
-
旋转对象
Returns:
boolean
- 是否旋转成功
- Overrides:
Example
object.rotateTo([0, 360, 0], {
loopType: THING.LoopType.Repeat,
duration: 10 * 1000
});
object.rotateTo({
to: [0, 360, 0],
duration: 10 * 1000
});
-
-
绕自身坐标系下的x轴进行旋转
Parameters:
| Name |
Type |
Description |
angle |
number
|
旋转角度 |
lerpParam |
LerpArgs
|
插值信息 |
Returns:
boolean
- 是否旋转成功
- Overrides:
-
-
绕自身坐标系下的y轴进行旋转
Parameters:
| Name |
Type |
Description |
angle |
number
|
旋转角度 |
lerpParam |
LerpArgs
|
插值信息 |
Returns:
boolean
- 是否旋转成功
- Overrides:
-
-
绕自身坐标系下的z轴进行旋转
Parameters:
| Name |
Type |
Description |
angle |
number
|
旋转角度 |
lerpParam |
LerpArgs
|
插值信息 |
Returns:
boolean
- 是否旋转成功
- Overrides:
-
-
缩放动画
Returns:
boolean
- 是否缩放成功
- Overrides:
Example
object.scaleTo(THING.Math.randomVector([1, 1, 1], [3, 3, 3]), {
loopType: THING.LoopType.PingPong,
duration: THING.Math.randomInt(1000, 5000)
});
object.scaleTo({
to: THING.Math.randomVector([1, 1, 1], [3, 3, 3]),
duration: THING.Math.randomInt(1000, 5000)
});
-
-
自身坐标转世界坐标
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
position |
Array.<number>
|
|
|
自身坐标系下的坐标 |
ignoreScale |
boolean
|
<optional>
|
false
|
转换时是否忽略缩放 默认不忽略 |
Returns:
Array.<number>
- 返回世界坐标
- Overrides:
Example
let obj = new THING.Object3D({ position: [0, 15, 0] });
let worldPos = obj.selfToWorld([0, -15, 0]);
// print [0, 0, 0]
console.log(worldPos);
-
-
设置动画的方向类型。
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
value |
AnimationDirectionType
|
方向类型(THING.AnimationDirectionType.Normal/THING.AnimationDirectionType.Reverse) |
Returns:
boolean
- 返回一个布尔值,表示是否设置成功
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.setAnimationDirectionType('Walk', 'Reverse');
let direction = UinoSpaceman.getAnimationDirectionType('Walk');
let ret = direction == 'Reverse';
// @expect(ret == true);
});
-
-
设置动画速度
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
value |
number
|
速度 |
Returns:
boolean
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat", speed: 10 });
UinoSpaceman.setAnimationSpeed('Walk', 20)
let speed = UinoSpaceman.getAnimationSpeed('Walk');
let ret = speed == 20;
// @expect(ret == true);
});
-
-
设置动画速度
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
value |
number
|
权重 |
Returns:
boolean
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat", speed: 10 });
UinoSpaceman.setAnimationWeight('Walk', 0.5)
let weight = UinoSpaceman.getAnimationWeight('Walk');
let ret = weight == 0.5;
// @expect(ret == true);
});
-
-
设置属性名称为key的属性值
Parameters:
| Name |
Type |
Default |
Description |
key |
string
|
|
属性名称,支持嵌套,例如设置object.a.b.c=1 可以使用object.setAttribute('a/b/c',1) |
value |
*
|
|
属性值 |
separator |
string
|
/
|
分隔符,默认是'/' |
- Overrides:
Example
let object = new THING.BaseObject();
object.setAttribute('userData/power', 200);
let power = object.getAttribute('userData/power');
// @expect(power == 200)
-
-
设置属性
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
attributes |
object
|
|
|
属性对象 |
overwrite |
boolean
|
<optional>
|
true
|
是否覆盖 |
separator |
string
|
|
/
|
分隔符,默认是'/' |
- Overrides:
Example
let object = new THING.BaseObject();
object.setAttributes({
"userData/name": 'Mr.Door',
"userData/age": 18
})
let name = object.getAttribute('userData/name');
// @expect(name == 'Mr.Door')
let age = object.getAttribute('userData/age');
// @expect(age == 18)
-
-
设置视锥剔除状态。
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
value |
boolean
|
|
|
为真表示启用视锥剔除,否则不启用。 |
recursive |
boolean
|
<optional>
|
false
|
为真表示处理所有子对象。 |
- Overrides:
Example
object.setFrustumCulled(true, true);
-
-
设置/更新实例化节点选项。
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 更新实例化渲染的参数
object.setInstancing({
maxNumber: 31104,
number: 31104,
matrices: matrices, // 包含所有实例的变换矩阵
pickedIds: pickedIds, // 可选,包含所有实例的拾取ID
colors: colors // 可选,包含所有实例的颜色
});
-
-
设置实例化属性。
Parameters:
| Name |
Type |
Description |
name |
string
|
名称。 |
value |
any
|
值。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 启用颜色属性
object.setInstancingAttribute('Colors', true);
-
-
按索引设置实例化清除颜色。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
value |
boolean
|
是否清除颜色。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 清除第一个实例的颜色
object.setInstancingClearOutColor(0, true);
-
-
按索引设置实例化颜色。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
color |
Array.<number>
|
颜色。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 将第30个实例设置为绿色
object.setInstancingColor(30, [0, 1, 0]);
// 随机将一些实例设置为红色警告色
for(let i = 0; i < warnCount; i++) {
const index = Math.floor(Math.random() * 31104);
object.setInstancingColor(index, [1, 0, 0]);
}
-
-
按索引设置实例化漫反射UV变换。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
diffuseUVTransform |
Array.<number>
|
漫反射UV变换。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 设置第一个实例的漫反射UV变换
object.setInstancingDiffuseUVTransform(0, [0, 0, 1, 1]);
-
-
按索引设置实例化矩阵。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
matrix |
Array.<number>
|
矩阵。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 修改第30个实例的变换矩阵,将其Y轴位置上移1个单位
const matrices = options[0].matrices[30];
object.setInstancingMatrix(30, [
1, 0, 0, matrices[3],
0, 1, 0, matrices[7] + 1,
0, 0, 1, matrices[11],
0, 0, 0, 1
]);
-
-
按索引设置实例化可见性。
Parameters:
| Name |
Type |
Description |
index |
number
|
索引。 |
visible |
boolean
|
可见性。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
// 隐藏第一个实例
object.setInstancingVisible(0, false);
-
-
设置可拾取状态。
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
value |
boolean
|
|
|
可拾取状态。 |
recursive |
boolean
|
<optional>
|
false
|
为真表示处理所有子对象。 |
- Overrides:
Example
object.setPickable(true, true);
-
-
设置渲染顺序。
Parameters:
| Name |
Type |
Description |
value |
number
|
渲染顺序的值,渲染顺序从低到高。 |
recursive |
boolean
|
为真表示处理所有子对象。 |
Returns:
boolean
- 是否设置成功
- Overrides:
Example
object.setRenderOrder(10);
-
-
整体设置样式
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
value |
object
|
|
|
样式对象 |
recursive |
boolean
|
<optional>
|
false
|
是否影响孩子样式 |
- Overrides:
Example
let box1 = new THING.Box();
let box2 = new THING.Box({parent: box1});
box1.setStyle({color: 'red'});
// @expect(box1.style.color[0] == 1);
// @expect(box1.style.color[1] == 0);
// @expect(box1.style.color[2] == 0);
// @expect(box2.style.color == null);
-
-
设置visible的状态
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
value |
boolean
|
|
|
是否显示 |
recursive |
boolean
|
ProcessObjectCallback
|
<optional>
|
false
|
是否同时影响它的孩子 |
- Overrides:
Example
// Hide object self only, exclude all children
object.setVisible(false, false);
// Hide object(s) but exclude children what name equals to 'stone'
object.setVisible(false, (obj) => {
if (obj.name == 'stone') {
return false;
}
});
-
-
停止所有动画
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret1 = UinoSpaceman.isAnimationPlaying('Walk');
UinoSpaceman.stopAllAnimations();
let ret2 = UinoSpaceman.getAnimationState() == 'Stopped';
// @expect(ret1 == true && ret2 == true);
});
-
-
停止动画
Parameters:
| Name |
Type |
Description |
name |
string
|
动画名称 |
Example
var UinoSpaceman = new THING.Entity({url:'.assets/models/UinoSpaceman/UinoSpaceman.gltf'});
UinoSpaceman.waitForComplete().then(() => {
UinoSpaceman.playAnimation({ name: 'Walk', loopType: "Repeat" });
let ret1 = UinoSpaceman.isAnimationPlaying('Walk');
UinoSpaceman.stopAnimation('Walk');
let ret2 = UinoSpaceman.getAnimationState() == 'Stopped';
// @expect(ret1 == true && ret2 == true);
});
-
-
停止淡入淡出动作。
- Overrides:
Example
object.stopFading();
-
-
停止飞行
- Overrides:
Example
object.stopFlying();
-
-
停止移动
- Overrides:
Example
object.stopMoving();
-
-
停止旋转
- Overrides:
Example
object.stopRotating();
-
-
停止缩放动画
Returns:
boolean
- 是否停止成功
- Overrides:
Example
object.stopScaling();
-
-
停止UV变化 主要用于贴图动画
Returns:
boolean
- 是否停止成功
- Overrides:
Example
object.stopUVTransform(THING.ImageSlotType.Map);
-
-
沿三个轴向对物体做偏移
Parameters:
| Name |
Type |
Attributes |
Description |
offset |
Array.<number>
|
|
三个轴向的偏移 单位米 |
lerpParam |
LerpArgs
|
<optional>
|
插值信息 |
Returns:
boolean
- 是否平移成功
- Overrides:
Example
object.translate([10, 10, 10], {time: 1000})
-
-
沿着自身X轴对物体做偏移
Parameters:
| Name |
Type |
Attributes |
Description |
distance |
number
|
|
偏移距离 单位米 |
lerpParam |
LerpArgs
|
<optional>
|
插值信息 |
Returns:
boolean
- 是否平移成功
- Overrides:
Example
object.translateX(10, {time: 1000})
-
-
沿着自身Y轴对物体做偏移
Parameters:
| Name |
Type |
Attributes |
Description |
distance |
number
|
|
偏移距离 单位米 |
lerpParam |
LerpArgs
|
<optional>
|
插值信息 |
Returns:
boolean
- 是否平移成功
- Overrides:
Example
object.translateY(10, {time: 1000})
-
-
沿着自身Z轴对物体做偏移
Parameters:
| Name |
Type |
Attributes |
Description |
distance |
number
|
|
偏移距离 单位米 |
lerpParam |
LerpArgs
|
<optional>
|
插值信息 |
Returns:
boolean
- 是否平移成功
- Overrides:
Example
object.translateZ(10, {time: 1000})
-
-
递归遍历自己和自己的孩子 这个方法会遍历到所有的后代节点(孩子,孩子的孩子等)
Parameters:
| Name |
Type |
Description |
callback |
function
|
The callback function. 执行遍历时执行的方法 |
- Overrides:
Example
let parent = new THING.BaseObject();
let child1 = new THING.BaseObject({parent: parent});
let child2 = new THING.BaseObject({parent: parent});
let mark = 0;
parent.traverse((child) => {
mark++;
});
// @expect(mark == 3)
-
-
根据类型遍历查找组件
Parameters:
| Name |
Type |
Description |
type |
*
|
组件类型 |
callback |
TraverseComponentByTypeCallback
|
回调函数 |
- Overrides:
Example
object.addComponent(new MyComponent(), 'myComponent');
object.traverseComponentByType(MyComponent, (component, name) => {
console.log(component, name);
});
-
-
抛出事件
Parameters:
| Name |
Type |
Description |
type |
string
|
事件类型。 |
condition |
string
|
object
|
事件条件 或 事件数据。 |
data |
object
|
string
|
事件数据 或 事件标签。 |
tagName |
string
|
事件标签名称。 |
Returns:
*
- 返回一个对象,包含指定类型的事件
- Overrides:
Example
let object = new THING.BaseObject();
let markTrigger = {};
object.on('myEvent', function(ev) {
markTrigger = ev;
});
object.trigger('myEvent', { result: true });
let ret = markTrigger.result;
// @expect(ret == true);
new THING.Box();
app.on('test', (e) => {
console.log('无条件+tag1', e)
}, 'MyTag1');
app.on('test', (e) => {
console.log('无条件+tag2', e)
}, 'MyTag2');
app.on('test', ".Box", (e) => {
console.log('条件+tag1', e)
}, 'MyTag1');
app.on('test', ".Box", (e) => {
console.log('条件+tag2', e)
}, 'MyTag2');
// 事件类型 + 事件条件,触发事件。
app.trigger('test', '.Box');
// 事件类型 + 事件数据,触发事件
app.trigger('test', { result: true });
// 事件类型 + 事件条件 + 事件标签,触发事件
app.trigger('test', '.Box', 'MyTag2');
// 事件类型 + 事件条件 + 事件参数,触发事件
app.trigger('test', '.Box', { result: true });
// 事件类型 + 事件条件 + 事件数据 + 事件标签,触发事件
app.trigger('test', '.Box', { result: true },'MyTag2');
// 注意事项:
// 1. 事件标签不能单独使用,否则事件标签和事件条件无法区分。
app.trigger('test', null, 'MyTag2');
// 2. 事件数据兼容了数组的情况,如果传了数组将无法从参数中获取object。
app.trigger('test', '.Box', [{ result: 'r1' },{ result: 'r2' }], 'MyTag2')
-
-
解绑子节点。
- Overrides:
Example
let box = new THING.Box();
box.bindSubNode(car, 'chair');
box.unbindSubNode();
-
-
卸载资源 返回一个Promise对象
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
recursive |
boolean
|
<optional>
|
true
|
是否卸载所有孩子的资源 |
Returns:
Promise.<any>
- 返回一个Promise对象
- Overrides:
Example
// 等待物体卸载资源完成
await object.unloadResource();
-
-
开始UV变化
Parameters:
| Name |
Type |
Description |
slotType |
ImageSlotType
|
指定纹理类型 (diffuseMap,alphaMap,emissiveMap等) |
value |
LerpArgs
|
插值参数 参数中需指定UV对象中要变化哪个属性包含以下四种 {number[]} offset,{number[]} repeat,{number[]} center(number[]),{number} rotation |
Returns:
boolean
- 是否开始成功
- Overrides:
Example
// Lerp UV offset from [0, 0] to [-1, 0] in 2 seconds by repeat mode
object.uvTransformTo(THING.ImageSlotType.Map, {
from: { offset: [0, 0] },
to: { offset: [-1, 0] },
duration: 2000,
loopType: THING.LoopType.Repeat,
times: 3
});
-
-
等待物体资源加载完成 返回一个Promise对象
Returns:
Promise.<any>
- 返回一个Promise对象
- Overrides:
Example
// 等待物体资源加载完成
await object.waitForComplete();
app.camera.fit(object);
-
-
世界坐标转为相对于父物体的坐标
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
position |
Array.<number>
|
|
|
世界坐标 |
ignoreScale |
boolean
|
<optional>
|
false
|
转换时是否忽略缩放 默认不忽略 |
Returns:
Array.<number>
- 返回相对于父物体的坐标
- Overrides:
Example
let parentObj = new THING.Object3D({
position: [0, 5, 0]
});
let childObj = new THING.Object3D({
localPosition: [0, 10, 0],
parent: parentObj
});
let localPosition = childObj.worldToLocal([0, 5, 0]);
// print [0, 0, 0]
console.log(localPosition);
-
-
世界坐标转自身坐标
Parameters:
| Name |
Type |
Attributes |
Default |
Description |
position |
Array.<number>
|
|
|
世界坐标 |
ignoreScale |
boolean
|
<optional>
|
false
|
转换时是否忽略缩放 默认不忽略 |
Returns:
Array.<number>
- Overrides:
Example
let worldPos = [5, 10, 0];
let obj = new THING.Object3D({position: worldPos});
let selfPos = obj.worldToSelf(worldPos);
// print [0, 0, 0]
console.log(selfPos);