转自:http://www.cnblogs.com/fjut/archive/2012/04/28/2475693.html
//ccTouchBegan必须实现,否则会报错 bool PicScan::ccTouchBegan(CCTouch* pTouch, CCEvent* event) { return true; } void PicScan::ccTouchMoved(CCTouch *touch, CCEvent *event) { //获得触摸点初始坐标 CCPoint beginLoc = touch->locationInView(touch->view()); beginLoc = CCDirector::sharedDirector()->convertToGL(beginLoc); //判断鼠标拖拉的区域是否在图片上 if(CCRect::CCRectContainsPoint(lpSprite->boundingBox(), this->getParent()->convertTouchToNodeSpace(touch)) == true) { //固定图片在某个区域 if(lpSprite->getPosition().y > s.height/2+50) { lpSprite->setPosition(ccp(lpSprite->getPosition().x, s.height/2+50)); } if(lpSprite->getPosition().y < s.height/2-50) { lpSprite->setPosition(ccp(lpSprite->getPosition().x, s.height/2-50)); } printf(" ccTouchMoved -------------- "); //获得前一个触摸点坐标 CCPoint endLoc = touch->previousLocationInView(touch->view()); endLoc = CCDirector::sharedDirector()->convertToGL(endLoc); //计算偏移量 CCPoint offSet = ccpSub(beginLoc, endLoc); Drag(offSet); } } void PicScan::Drag(CCPoint offSet) { //计算精灵坐标加上移动偏移量、并设置精灵位置 CCPoint pos = ccpAdd(lpSprite->getPosition(), offSet); lpSprite->setPosition(pos); //.....<br>}