我的用例如下:
在一个循环中,正在创建实体并正在设置组件。这是通过传递给函数的json-object进行的。我的问题是,如何最好地使整个实体及其组件集被初始化。代码是这样的
var parent = document.querySelector('#parent');
var ent = document.createElement('a-entity');
parent.appendChild(ent);
for(var i =0; i = components.length; i++) {
var arr = components[i];
var cl = arr[0]; // class name
var attr = arr[2]; // component name
var attrV = arr[3]; // component data
ent.setAttribute('class', cl);
AFRAME.utils.entity.setComponentProperty(ent, attr, attrV);
//ent.setAttribute(attr, attrV); tried with this too
}
console.log('loop completed')
已完成的循环会在某些组件的加载完成之前记录下来。我想打个电话,以了解所有组件都已完成加载。
似乎有一个事件componentinitialized
,但它仅发送1个组件的返回值。我真正的要求(未在上面的代码中反映)是一个实体可以添加多个组件。
要使用以上内容,我可能必须为每个组件设置此事件,并跟踪它是否已完成。只是想知道是否有更优雅的方法。谢谢
答案 0 :(得分:0)
实体发出“已加载”事件。比监听实体中的每个组件初始化都要容易。
尝试:
Public Function IsVisible(pt As Point) As Boolean
Using p As New GraphicsPath
p.AddEllipse(New Rectangle(Location, Size))
Return p.IsVisible(pt)
End Using
End Function
就像我一样here。