我想在A-Frame制作一个动态数字时钟。我正在使用文本元素,但我无法通过在JS中设置属性来更改其文本。我仍然可以改变其他属性,如颜色。
...
<a-text id="clock" clock-text value="00:00" position="2.45 0 0.01" color="#FFFFFF" align="right"></a-text>
...
...
AFRAME.registerComponent('clock-text', {
init: function() {
var el = this.el;
el.setAttribute('value', '20:30');
el.setAttribute('color', 'black');
},
update: function() {
el.setAttribute('value', '20:30');
}
});
您可以在the jsfiddle I'm using中获取完整的代码。
答案 0 :(得分:1)
所以我认为这是一个竞争条件问题,因为a-text
实际上有两个更新,初始化时和接收到新值时(导致组件update
被调用)
文本组件会发出一个名为'textfontset' when updateFont
gets called from its init
的事件。
使用该事件,您可以在发出该事件后开始计时
AFRAME.registerComponent('clock-text', {
init: function() {
var el = this.el;
this.ready = false;
el.addEventListener('textfontset', function() {
this.ready = true;
}.bind(this));
},
tick: function() {
var el = this.el;
if (!this.ready) {
return;
}
el.setAttribute('value', '20:30');
}
});