这次要做一个拖动精灵的效果,那么我们需要一个响应触摸事件的精灵类,所以我们让其继承精灵类与触摸事件类。
然后重写其中的creat、ccTouchBegan、ccTouchMoved、onEnter函数。
第二步——响应触摸拖动事件:
bool player::ccTouchBegan(cocos2d::CCTouch * touch,cocos2d::CCEvent * event)
{
CCPoint touchPoint=touch->getLocation();//获得触摸OPENGL位置
CCPoint reallyPoint=this->getParent()->convertToNodeSpace(touchPoint);//触摸坐标转换为窗口内坐标
CCRect rect = this->boundingBox();//返回精灵矩形框
if(rect.containsPoint(reallyPoint))判断触摸位置是否在框里
{
return 1;//是就转移到move
}
return 0;//否则直接结束
}
void player::ccTouchMoved(cocos2d::CCTouch * touch,cocos2d::CCEvent * event)
{
CCPoint touchLocation = touch->getPreviousLocationInView();//获得触摸的UI坐标
CCPoint pos = CCDirector::sharedDirector()->convertToGL(touchLocation);//转化为opengl坐标
this->setPosition(ccp(pos.x,pos.y));//让精灵移动到该坐标
}