cococos 2 d-xプロジェクト101回の出会い:3.0のクリックイベント、CCTouchDelegateはすでに停止しました


  • cococos 2 d-x 101回出会い/ディレクトリ1  インストールと環境構築-xcode 2  Scenes , Director, Layers, Sprites3   画像メニューを作成する4  HelloWorldで--新しいシーンを作成する5  スプライト5.1を追加  spriteを縮小して完全に表示する6  Action,移動sprite 7  3.0のクリックイベント、CCTouchDelegateはすでに無効になりました8  タッチイベントを使用してスプライト
  • を移動する
    cococos 2 d−x 3.0は、touchイベントをspriteにバンドルするためにTouchDelegate方式を使用しなくなった.
    新しい方法は
     
     
    1. auto listener =EventListenerTouchOneByOne::create();

    2.    listener->setSwallowTouches(true);

    3.    listener->onTouchBegan = CC_CALLBACK_2(CMyFirstScene::onTouchBegan,this);

    4.    listener->onTouchMoved = CC_CALLBACK_2(CMyFirstScene::onTouchMoved,this);

    5.    listener->onTouchEnded = CC_CALLBACK_2(CMyFirstScene::onTouchEnded,this);

    6.    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);

    这段代码可以放在.cpp里面的 init里。

    头文件增加:

     
     
    1. Sprite*s;

    2. //

    3. bool onTouchBegan(Touch* touch,Event*event);

    4. void onTouchMoved(Touch* touch,Event*event);

    5. void onTouchEnded(Touch* touch,Event*event);

    6. void selectSpriteForTouch(Point touchLocation);

    s 为全局的精灵。

     
     
    1. boolCMyFirstScene::onTouchBegan(Touch* touch,Event*event)

    2. {

    3.    CCLOG("TouchBegan");

    4. Point touchLocation =this->convertTouchToNodeSpace(touch);

    5. this->selectSpriteForTouch(touchLocation);

    6. returntrue;

    7. }

    8. voidCMyFirstScene::onTouchMoved(Touch* touch,Event*event)

    9. {

    10.    CCLOG("TouchMoved");

    11. }

    12. voidCMyFirstScene::onTouchEnded(Touch* touch,Event*event)

    13. {

    14.    CCLOG("TouchEnded");

    15. }

    16. voidCMyFirstScene::selectSpriteForTouch(Point touchLocation)

    17. {

    18. if(s->getBoundingBox().containsPoint(touchLocation))

    19. {

    20. Action* actionMove =

    21. MoveTo::create(2.0,

    22.                           ccp(300,200));

    23.            s->runAction(actionMove);

    24. }

    25. }

    , , 。