H5C3J 学习笔记 part7 AreaDivider KineticJS

今天的部分,只在完成同类分区计算的功能,核心计算办法如下:

 var countTimeIndex = 0;  
 function countDiffArea()  
 {  
   var result = 0;  
   for(var i = 0;i < 10; i++)  
   {  
     for(var j = 0; j < 8;j++)  
     {  
       var rect = getObjOnStageByIndex(i,j);  
       if(findSameAround(i,j,rect.attrs.countryType,0))  
       {  
         result += 1;  
         countTimeIndex += 1;  
       }  
     }  
   }  
   changeAreaCount();  
   return result;  
 }  
 function findSameAround(i,j,type,num)  
 {  
   var rect = getObjOnStageByIndex(i,j);  
   var currentType = rect.attrs.countryType;  
   if(rect.attrs.visited)  
   {  
     return 0;  
   }  
   if(currentType != type)  
   {  
     return 0;  
   }else  
   {  
     num += 1;  
     rect.attrs.visited = true;  
     setTimeout(function(){  
       standUpMyRect(i,j);  
       layer.draw();  
     },countTimeIndex*500);  
   }  
   if(i+1 < 10)  
   {  
     findSameAround(i+1,j,type,num);  
   }  
   if(i-1 >= 0)  
   {  
     findSameAround(i-1,j,type,num);  
   }  
   if(j+1 < 8)  
   {  
     findSameAround(i,j+1,type,num);  
   }  
   if(j-1 >= 0)  
   {  
     findSameAround(i,j-1,type,num);  
   }  
   return num;  
 }  
[![](http://tiger-a-s-s.tobybai.cn/%2525E5%2525B1%25258F%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202013-09-29%252520%2525E4%2525B8%25258B%2525E5%25258D%2525884.22.17.png)](http://tiger-a-s-s.tobybai.cn/%2525E5%2525B1%25258F%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202013-09-29%252520%2525E4%2525B8%25258B%2525E5%25258D%2525884.22.17.png)
完成的例子在此,[Demo](http://hector.ziki.me/kinetic/areadivider/AreaDivider.html)