您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。