歡迎轉載!轉載時請註明出處:http://blog.csdn.net/aa4790139/article/details/8139039
遊戲中控制角色的走動,地圖的拖動等,自然少不了觸屏事件...
就以test裡面的例子,來講解如何利用觸屏事件來控制一個CCSprite的移動
第一步:添加如下方法到你建立的精靈類下
//添加觸屏委託,重新此方法
virtual void onEnter();
//觸屏響應重寫這三個方法
virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);//按下
virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);//拖動
virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);//鬆開
第二步:重寫方法
void Paddle::onEnter(){ CCDirector* pDirector = CCDirector::sharedDirector(); //添加一個觸摸委託給dispatcher的列表,委派物件this,優先順序,一次按下(暫時我不知道有什麼用,知道的朋友請跟我留言?謝謝) pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, false); CCSprite::onEnter();}bool Paddle::ccTouchBegan(CCTouch* touch, CCEvent* event){ if (m_state != kPaddleStateUngrabbed) return false;//捕獲中這裡返回false if ( !containsTouchLocation(touch) ) return false;//是否點中了paddle m_state = kPaddleStateGrabbed;//修改狀態,變成捕獲到 return true;}void Paddle::ccTouchMoved(CCTouch* touch, CCEvent* event){ CCAssert(m_state == kPaddleStateGrabbed, L"Paddle - Unexpected state!"); //獲得觸點座標 CCPoint touchPoint = touch->locationInView(); //將一個UIKit視圖(起點左上方)座標的轉換成OpenGL(xy左下角,z軸垂直xy向裡)座標 touchPoint = CCDirector::sharedDirector()->convertToGL( touchPoint ); setPosition( CCPointMake(touchPoint.x, getPosition().y) );}void Paddle::ccTouchEnded(CCTouch* touch, CCEvent* event){ CCAssert(m_state == kPaddleStateGrabbed, L"Paddle - Unexpected state!"); m_state = kPaddleStateUngrabbed;//結束設定成未捕獲狀態}
哈哈!現在我們就掌握了,如何可以控制事件響應了....
感謝大家閱覽我的博文,希望也能看到大家留下的腳印...呵呵!
如果講述得有誤,或者不對的地方,還望各位指出!