読者です 読者をやめる 読者になる 読者になる

cocos2d-x タッチイベント取得

ios cocos2d-x

概要

  • タッチイベントを取得してゲーム中で使用する

ブランチ「develop/multi-scene-stack」をベースにする

  • 前回サンプルに追加実装した

タッチイベントコールバックをオーバーライド

  • cocos2d-xのクラスリファレンスを見るとタッチイベント用関数の仮想関数があるのでそれをアプリ用ヘッダでも宣言する
    void registerWithTouchDispatcher();
    bool ccTouchBegan( cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent );
    void ccTouchEnded( cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent );

タッチイベント実装

  • cpp側でオーバーライドした関数の実装を行う
    • http://dummyimage.com/ で画像つくってボタンを押したら画像がかわるようにする
    • CCSpriteのオブジェクトをメンバ変数で保持してるようにしているが省略
bool Title::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
    this->mSprite->initWithFile("background_touch_began.png");
    
    return true;
}

void Title::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
    this->mSprite->initWithFile("background_touch_end.png");
}

タッチイベントをとるオブジェクトの設定

void Title::registerWithTouchDispatcher()
{
    //CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-129,true);
    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-127,true);
}

タッチイベントの有効化

  • デフォルトでも有効かもしれないが一応initの中で呼んどく
    // enable touch event
    this->setTouchEnabled(true);

動かす

f:id:kambayashi:20120820003851p:plainf:id:kambayashi:20120820003852p:plain