1
我有一個循環來查看給定的形狀是否與KineticJS程序中的任何其他形狀發生碰撞。下面是僞代碼的情況唯一標識KineticJS形狀
function hasCollision(shape, index) {
var children = layer.children;
for(var i = 0, l = children.length; i < l; i++) {
if(i === index) continue; // Only check other shapes
if(collision(shape, children[i]))
return true;
}
return false;
}
我不喜歡這種方式,我必須保存在某個地方的指數每個形狀在我的代碼。此外,如果我從數組中刪除元素,代碼將會中斷。
我閱讀文檔,找不到任何關於比較形狀等,但我可能忽略了一些東西。 KineticJS是否已經有了唯一識別/比較形狀實例的方法?如果沒有,可以將自定義數據附加到節點上嗎?它會繼續使用序列化嗎?這樣做可能會破壞當前或未來版本的KineticJS?
編輯:要清楚,這是我考慮
shape.uid = uid_factory++;
...
function hasCollision(shape) {
var children = layer.children;
for(var i = 0, l = children.length; i < l; i++) {
var other = children[i];
if(other.uid === shape.uid) continue; // Only check other shapes
if(collision(shape, other))
return true;
}
return false;
}
\ * Derp \ *。非常感謝。 – acbabis