Cocos2d-x初入學堂(14)–>觸屏事件

來源:互聯網
上載者:User

歡迎轉載!轉載時請註明出處: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;//結束設定成未捕獲狀態}

哈哈!現在我們就掌握了,如何可以控制事件響應了....
感謝大家閱覽我的博文,希望也能看到大家留下的腳印...呵呵!
如果講述得有誤,或者不對的地方,還望各位指出!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.