我正在编写一个可以接受vec3作为模式属性的组件:
AFRAME.registerComponent('control-arrows', {
schema: {
'directions': {
'type': 'array',
'default': [
{'x': 1, 'y': 0, 'z': 0},
{'x': -1, 'y': 0, 'z': 0},
{'x': 0, 'y': 0, 'z': 1},
{'x': 0, 'y': 0, 'z': -1}
]
}
},
/* init and stuff */
}
如示例中所示,我使用了类型array
。但是,此类型不够严格,因为它应该是array
vec3
。请注意,vec3
的数量可能会有所不同,因此我无法使用vec3
类型的4个属性。
如何执行此类限制?更具体地说,如何正确解析HTML部分,可能是:
<a-entity
control-arrows: "positions: 1 0 1, -1 0 -1">
</a-entity>
答案 0 :(得分:1)
您可以创建自定义属性类型:https://aframe.io/docs/0.5.0/core/component.html#custom-property-type
schema: {
'directions': {
'parse': function (val) {
return val.split(',').map(AFRAME.utils.coordinates.parse);
},
'default': [
{'x': 1, 'y': 0, 'z': 0},
{'x': -1, 'y': 0, 'z': 0},
{'x': 0, 'y': 0, 'z': 1},
{'x': 0, 'y': 0, 'z': -1}
]
}
},