實體多屬性元件資料(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);