2017-05-04 6 views
0

mycomponentと呼ばれるAFRAMEコンポーネントを登録しました。このコンポーネントは、単にカメラをターゲットに向け、クリック時に位置を変更します。そのためには、コンポーネントは、targetpositionの2つを持っています。setAttributeが以前の所有者をリセットするAFrameの問題

私はpenを作成しました。ここであなたはその動作を見ることができます。

setAttributeを呼び出してpositionを更新すると、位置は変更されますが、targetの有効性はデフォルトにリセットされます。さらに、エンティティ属性は同じままです。何故ですか?

答えて

0

setAttributeのメソッドは、Aフレームプリミティブでは無効になります。既存のノードに属性としてコンポーネントを追加するメソッドを呼び出すと、既存のコンポーネント属性が上書きされます。したがって、targetがリセットされます。 AEntityを使用していることを確認して、コンポーネントの属性を特定の値に設定することができます。この問題を解決するためにaframe/core/a-entity.js

でsetAttributeメソッドのJSのドキュメントをチェックし 、単に呼び出す:

let camera = document.getElementById('camera') 
    camera.setAttribute('mycomponent', 'position', '-10 0 10') 

かを...

let camera = document.getElementById('camera') 
    AFRAME.utils.entity.setComponentProperty(camera, 'mycomponent', 'position', '-10 0 10') 

...あなたにオプションを与えます最初のパラメータには(カスタムの)デリミタ(デフォルトは "。")を使用してください。AFRAME.utils.entity.setComponentProperty(camera, 'mycomponent.position', '-10 0 10' [, delimiter])

**重要事項AEntityに継承されているANodeは、setAttributeメソッドの実装が異なります。

+0

'camera.setAttribute( 'MyComponentの'、 '位置'、 '-10 0 10')'作品。また、camera.setAttribute( 'mycomponent'、{position: '-10 0 10'})も動作します。私は 'AFRAME.utils'を使用しませんでしたが、あなたが作った説明はそれの背後にある黒い魔法を指摘しています。 –

0

.setAttributeに文字列形式を渡すとバグが発生する可能性があります。

試してみてください。

el.setAttribute('component', {position: '-10 10 10'}); 

または:

el.setAttribute('component', 'position', '-10 10 10'); 
関連する問題