思路也挺简单的,主要就是获取到当前触摸的点,然后判断它离哪个节点近,自动判断到最近的那个节点。
刚开始我算法思路都是很明确的,但是不知怎的就是不到节点上,后面一看,是精度的问题,然后就把节点全部变成整数才行
下面是代码
Point PlayScene::GetQiziPoint(Point TouchPoint,Rect QipanRect)
{
Size size = QipanRect.size; //棋盘的尺寸
Point point = QipanRect.origin; //相当于坐标原点
int oneWidth = (int)size.width/LINENUM;//单个宽度
float widthleft = ((int)(TouchPoint.x-point.x))%oneWidth
+ ((TouchPoint.x-point.x)-(int)(TouchPoint.x-point.x));//离左边的最近的线条的距离
float heightbottom =((int)(TouchPoint.y - point.y))%oneWidth
+ ((TouchPoint.y - point.y) - (int)(TouchPoint.y - point.y)); //离底部最近的线条的距离
Point origin = Point(TouchPoint.x-widthleft,
TouchPoint.y -heightbottom); //这是离点击点最近的左下角的点
if(widthleft>oneWidth/2 && heightbottom>oneWidth/2) //右上角
point = Point(origin.x+oneWidth,
origin.y+oneWidth);
else if(widthleft<oneWidth/2 && heightbottom>oneWidth/2) //左上角
point = Point(origin.x,
origin.y+oneWidth);
else if(widthleft>oneWidth/2 && heightbottom<oneWidth/2) //右下角
point = Point(origin.x+oneWidth,
origin.y);
else
point = Point(origin);
CCLog("touchpoint:%f,%f",TouchPoint.x,TouchPoint.y);
CCLog("showpoint:%f,%f",point.x,point.y);
return point;
}