您好,登錄后才能下訂單哦!
Cocos2d-x 單點觸摸
首先,要在.h文件中注冊觸摸事件的回調(diào)方法:
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文件實現(xiàn)如下:
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } //在實現(xiàn)單點觸摸之前,需要為我們的觸摸事件進(jìn)行注冊: //這里的三個參數(shù),第一個:是哪個對象進(jìn)行觸摸注冊,第二個:觸摸優(yōu)先級 第三個是否吞噬掉本次觸摸事件 CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true); //所謂觸摸事件的優(yōu)先級,就是如果我們在一個場景中注冊了多個觸摸事件,誰會先接受到這次觸摸事件,優(yōu)先級數(shù)值越小,優(yōu)先級越高,也就會優(yōu)先得到這次觸摸事件,它可以選擇是否處理這次觸摸,以及是否將這次觸摸傳遞下去.值得一提的是,CCMenu的優(yōu)先級是-128。 //所謂吞噬事件,就是說如果我們選擇true,并且處理這個事件,那么觸摸事件就不會發(fā)送給其他代理。 return true; }
//開始觸摸的回調(diào)方法 bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { //獲取openGL坐標(biāo) CCPoint openglPoint = pTouch->getLocation(); CCLog("openGL = %f,%f",openglPoint.x,openglPoint.y); //獲取屏幕坐標(biāo),原點在左上角 CCPoint screenPoint = pTouch->getLocationInView(); CCLog("屏幕坐標(biāo) = %f,%f",screenPoint.x,screenPoint.y); return true; }
//觸摸移動時的回調(diào)方法 void HelloWorld::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { //獲得前一個點的坐標(biāo) CCPoint startPoint = pTouch->getPreviousLocation(); //獲得當(dāng)前點的坐標(biāo) 是按屏幕的坐標(biāo)獲取的就是說以左上角為原點。 CCPoint endPoint = pTouch->getLocation(); CCLog("startPointX = %f,startPointY = %f",startPoint.x,startPoint.y); CCLog("endPointX = %f,endPointY = %f",endPoint.x,endPoint.y); }
//觸摸結(jié)束時的回調(diào)方法 void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { }
代碼下載 http://pan.baidu.com/share/link?shareid=2820307714&uk=3189484501
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。