实体多属性组件数据(setAttribute)
更新多属性组件数据
要更新多属性组件的组件数据,我们可以将已注册组件的名称作为 componentName 传递,并将属性对象作为值传递。字符串也是可以接受的(例如,类型:点;距离:30 ),但是对象将在解析时保存 A-Frame 的一些工作:
// Only the properties passed in the object will be overwritten.
entity.setAttribute('light', {
type: 'spot',
distance: 30,
intensity: 2.0
});
或者,要更新多属性组件的各个属性,我们可以将已注册组件的名称作为 componentName 传递,将属性名称作为第二个参数传递,将属性值作为第三个参数传递:
// All previous properties for the material component (besides the color) will be unaffected.
entity.setAttribute('material', 'color', 'crimson');
请注意,数组属性类型的行为是唯一的:
- 数组是可变的。它们通过引用分配,因此组件可以看到对数组的更改。
- 对数组类型属性的更新不会触发组件的更新方法,也不会发出事件。
更新多属性组件数据
如果将 true 作为第三个参数传递给 .setAttribute ,则将重置未命名的属性并使用 clobbered:
// All previous properties for the light component will be removed and overwritten.
entity.setAttribute('light', {
type: 'spot',
distance: 30,
intensity: 2.0
}, true);