カスタムJSONファイルをAフレームコンポーネントにデータとしてロードする最も良い方法は何ですか?たとえば、JSONファイルには点の座標が含まれている場合があります。ファイルをアセットとしてロードし、コンポーネント内の解析されたjsonオブジェクトを使用したいとします。JSONデータをAフレームコンポーネントに読み込む方法は?
{"coordinates": [{"x": 0, "y": 1, "z": 2}, // ...]}
カスタムJSONファイルをAフレームコンポーネントにデータとしてロードする最も良い方法は何ですか?たとえば、JSONファイルには点の座標が含まれている場合があります。ファイルをアセットとしてロードし、コンポーネント内の解析されたjsonオブジェクトを使用したいとします。JSONデータをAフレームコンポーネントに読み込む方法は?
{"coordinates": [{"x": 0, "y": 1, "z": 2}, // ...]}
define your own property type in the schema that parses data how you wishとすることができます。
el.setAttribute('foo', 'jsonData', yourJsonData);
または::
<a-entity foo='jsonData: {"coordinates": [{"x": 0, "y": 1, "z": 2}]}'></a-entity>
もう一つの方法は、コンポーネントを使用
AFRAME.registerComponent('foo', {
schema: {
jsonData: {
parse: JSON.parse,
stringify: JSON.stringify
}
}
});
:JSON.parse
を行うparse
関数を作成し、コンポーネントからJSONを解析するために
スキーマを持たないようにコンポーネントを設定してオブジェクトを取得するだけです。そこはまだ「ワイルドカード」のスキーマを持っている何のAPIはありませんが、一つの方法は、styleParserとインラインCSS-のような文字列解析し、プロパティタイプ持っていることです。
AFRAME.registerComponent('foo', {
schema: {
parse: AFRAME.utils.styleParser.parse
}
});
上記の構成要素は、単一のプロパティですスキーマ、我々はthis.data
の値になります渡すので、どんなオブジェクト:
el.setAttribute('foo', {bar: 'baz', qux: 'qaz', whateverWeWant: true});
または:
<a-entity foo="bar: baz; qux: qaz: whateverWeWant: true"></a-entity>