1.代码
bool HelloWorld::ccTouchBegan (CCTouch *pTouch, CCEvent *pEvent)
{
CCRect rect(pmonsterSprite->getTextureRect());
CCPoint offsetPoint(pmonsterSprite->getPosition());
rect.origin.setPoint(offsetPoint.x-rect.size.width/2,offsetPoint.y-rect.size.height/2);
CCPoint touchPoint = pTouch->locationInView();
touchPoint=CCDirector::sharedDirector()->convertToGL(touchPoint);
char info[200];
sprintf(info,"%d,%d",(int)touchPoint.x,(int)touchPoint.y);
labelPointInfo->setString(info);
sprintf(info,"%d,%d,w=%d,h=%d",(int)rect.getMinX(),(int)rect.getMinY(),(int)rect.size.width,(int)rect.size.height);
labelMonsterInfo->setString(info);
if(CCRect::CCRectContainsPoint(rect,touchPoint))
{
labelinfo->setString("in");
}
else
{
labelinfo->setString("out");
}
return false;
}
2.解说
宽度和高度:pmonsterSprite->getTextureRect()得到的是精灵的当前帧的rect, rect的width和heigth是稳定的,但是它的起点是当前帧在plist文件中的位移,所以不可以使用它的起点位置。
起点:pmonsterSprite->getPosition()返回的是精灵的中心坐标,可以根据宽度和高度,算出起点坐标。
利用CCRect::CCRectContainsPoint()判断一个点是否在矩形内。