第一次尝试paper.js,处理一些生成视觉效果。试图找出实现以下目标的最佳途径:
所以我遇到了一些试图完成此事的问题。我检查了十字路口:
//cloudArray refers to an array of path items
Cloud.prototype.checkIntersection = function() {
//loop through all existing cloud shapes
for(var i=0;i<cloudArray.length;i++){
//avoid checking for intersections on the same cloud path
if(this.path !== cloudArray[i].path){
//if path intersects another, group the two, and
//sort them in the order of their id
if(this.path.intersects(cloudArray[i].path)){
tmpGrp = [this.path,cloudArray[i].path];
tmpGrp.sort(function(a,b){return a.id - b.id});
groupClouds(tmpGrp);
}
}
}
}
现在检查交叉点后,我尝试将云组合成数组:
function groupClouds(tmpGrp){
if(grps.length > 0){
for(var i=0;i<grps.length;i++){
if(tmpGrp !== grps[i]){
console.log('doesnt match');
grps.push(tmpGrp);
}else{
console.log('matches');
}
}
}else{
grps[0] = tmpGrp;
}
console.log(grps);
}
现在我知道我无法通过这种方式比较数组,因此我尝试使用here给出的解决方案,但我不想进一步混淆这个问题。
这种方法合理吗?我知道如果我可以为每个组创建数组,我可以创建一个新的compoundPath。问题在于确保交叉云的每个集合都是正确的,并且它们正在高效更新。
有什么建议吗?