我有一个由唯一ID链接在一起的对象数组。
这样的事情:
var nodes = [];
nodes[0] = {'id':1,'linksTo':[2,3],'x':1,'y':1};
nodes[1] = {'id':2,'linksTo':[1],'x':2,'y':1};
nodes[2] = {'id':3,'linksTo':[1],'x':2,'y':1};
所以假设我要在它们链接到的canvas元素中的每个点之间绘制线条。在上面的例子中,我会绘制两次相同的行,一个从id 1到id 2,然后再从id 2到id 1.这样效率不高,并且在游戏循环中这会损害帧速率。
我目前的方法类似于这个逻辑:
Object.keys(nodes).forEach(function(nodeIndex) {
nodes[nodeIndex].linksTo.forEach(function(connectedNode) {
//line move to x,y
//line to x2, y2
});
});
这样做最有效的方法是不伤害帧速率并避免两次绘制相同的方式?记住,它需要有效地允许更高的帧速率继续。
答案 0 :(得分:3)
只有当第一个节点的id小于第二个节点的id时才能绘制该行。