0

「サウンド」という属性を含む要素があります。このサウンド属性の値はオブジェクトです。このオブジェクトのプロパティの 1 つに「ボリューム」があります。

言い換えると:

<a-entity position='0 0 0' sound='src: url; on: click; volume: 2.0;'></a-entity>

したがって、次のようになります。

{
  position: '0 0 0',
  sound: {
    src: 'url',
    on: 'click',
    volume: '2.0'
  }
}

setAttribute を使用してボリューム属性を更新していますが、オブジェクトの他のプロパティを変更せずに 1 つのプロパティのみを対象とする効果的な方法があるかどうかはわかりません。

基本的に、これはサウンド オブジェクトを置き換え、指定されていないすべてのプロパティを削除します (src AND on プロパティは削除されます)。

element.setAttribute('sound', {
  volume: '4'
});

オブジェクト全体を置き換えたくありません。1 つのプロパティの 1 つの値のみを置き換えたい。これについて最善の方法はありますか?

4

2 に答える 2

3

ここのドキュメントにある setAttribute の 3 引数バージョンを利用できます: https://aframe.io/docs/core/entity.html#Updating-Multi-Property-Component-Data

具体的には、次のようなことができます。

element.setAttribute("sound", "volume", "4");
于 2016-04-13T18:57:57.447 に答える
-1

属性に対応するオブジェクトを取得し、必要なプロパティのみを置き換えることができます。

このようなもの:

var data = element.getAttribute('sound');
data.volume = '4';
element.setAttribute('sound', data);

編集

実際の JS オブジェクトのように html にデータを設定すると、次のようになります。

var newData = JSON.parse(element.getAttribute('sound'));
newData.volume = 4;
element.setAttribute('sound', JSON.stringify(newData));

ここにフィドルがあります

于 2016-04-12T08:58:13.343 に答える