Cocos2d-x 单点触摸
首先,要在.h文件中注册触摸事件的回调方法:
bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
.cpp文件实现如下:
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } //在实现单点触摸之前,需要为我们的触摸事件进行注册: //这里的三个参数,第一个:是哪个对象进行触摸注册,第二个:触摸优先级 第三个是否吞噬掉本次触摸事件 CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true); //所谓触摸事件的优先级,就是如果我们在一个场景中注册了多个触摸事件,谁会先接受到这次触摸事件,优先级数值越小,优先级越高,也就会优先得到这次触摸事件,它可以选择是否处理这次触摸,以及是否将这次触摸传递下去.值得一提的是,CCMenu的优先级是-128。 //所谓吞噬事件,就是说如果我们选择true,并且处理这个事件,那么触摸事件就不会发送给其他代理。 return true; }
//开始触摸的回调方法 bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { //获取openGL坐标 CCPoint openglPoint = pTouch->getLocation(); CCLog("openGL = %f,%f",openglPoint.x,openglPoint.y); //获取屏幕坐标,原点在左上角 CCPoint screenPoint = pTouch->getLocationInView(); CCLog("屏幕坐标 = %f,%f",screenPoint.x,screenPoint.y); return true; }
//触摸移动时的回调方法 void HelloWorld::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { //获得前一个点的坐标 CCPoint startPoint = pTouch->getPreviousLocation(); //获得当前点的坐标 是按屏幕的坐标获取的就是说以左上角为原点。 CCPoint endPoint = pTouch->getLocation(); CCLog("startPointX = %f,startPointY = %f",startPoint.x,startPoint.y); CCLog("endPointX = %f,endPointY = %f",endPoint.x,endPoint.y); }
//触摸结束时的回调方法 void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { }
代码下载 http://pan.baidu.com/share/link?shareid=2820307714&uk=3189484501
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。