我正在框架中注册一个由其他基元组成的基元。但我想独立地缩放和定位这些内部基元。但由于位置本身是一个组成部分,这些内部基元没有位置,因此我无法移动它们。
如何在我想要注册的基元的一部分的基元的组件上设置值?
AFRAME.registerPrimitive('a-svrbutton', {
defaultComponents: {
geometry: {
primitive: 'box',
height: 1.5,
depth: 0.2,
width: 3.5
},
material: {
opacity: 1.0,
transparent: true,
side: 'Double',
color: '#8450ff'
},
position: {
x: 0,
y: 0,
z: -5
},
'bmfont-text': {
text: 'hola',
color: '#ffffff'
},
},
mappings: {
height: 'geometry.height',
width: 'geometry.width',
depth: 'geometry.depth',
color: 'material.color',
opacity: 'material.opacity',
position: 'position'
}
});

<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
<a-scene>
<a-svrbutton id="mybutton" position="0 0 -5"></a-svrbutton>
</a-scene>
&#13;
确保您的浏览器支持WebVR运行上面的代码段。
我想在默认的&#34;组件&#34;中定义默认位置。 bmfont-text作为任意x y和z。但我不能因为这个原始因素而已。没有位置组件本身。我怎么能这样做?
答案 0 :(得分:1)
primitive通常是一个或多个组件的简写,而不是其他原语,所以我可能会误解你在做什么 - 如果是这样的话,你可以将示例代码添加到你的问题
通常可以将不相关的组件添加到基元中,即使基元没有该组件也是如此:
<a-text text="Hello World;" position="0 0 -5"></a-text>
如果这不起作用,我建议使用bmfont作为组件而不是<a-text />
原始版本。
<a-entity bmfont-text="text: Hello World;" position="0 0 -5"></a-entity>
从A-Frame v0.3.0开始,有一些bugs with primitives,因此组件和mixin可能更可靠。
答案 1 :(得分:0)
一种方法是将它们作为两个独立的实体。
<a-entity>
<a-srvbutton></a-srvbutton>
<a-text></a-text>
</a-entity>
或者也许制作一个包装组件来包装bmfont文本?
AFRAME.registerComponent('bmfont-text-wrapper', {
schema: {
textPosition: {type: 'vec3'},
text: {type: 'string'}
},
init: function () {
var text = document.createElement('a-entity');
text.setAttribute('bmfont-text', this.data.text);
text.setAttribute('position', this.data.textPosition);
this.el.appendChild(text);
}
});
然后添加映射。