cocos2d-x项目101次相遇:3.0 的点击事件,CCTouchDelegate已经停用了

  • cocos2d-x 101次相遇 / 目录 
    1   安装和环境搭建 -xcode 
    2   Scenes , Director, Layers, Sprites
    3   建立图片菜单 
    4   在HelloWorld上--建立新场景 
    5   增加一个精灵sprite 
    5.1   缩小sprite并使之完整显示

    6   action ,移动sprite 
    7   3.0 的点击事件,CCTouchDelegate已经停用了
    8   使用触摸事件移动 精灵


cocos2d-x 3.0 不再使用 TouchDelegate方式来将touch事件捆绑到sprite上。

新的方法是

 
 
  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. bool CMyFirstScene::onTouchBegan(Touch* touch, Event* event)
  2. {
  3. CCLOG("TouchBegan");
  4. Point touchLocation = this->convertTouchToNodeSpace(touch);
  5. this->selectSpriteForTouch(touchLocation);
  6. return true;
  7. }
  8. void CMyFirstScene::onTouchMoved(Touch* touch, Event* event)
  9. {
  10. CCLOG("TouchMoved");
  11. }
  12. void CMyFirstScene::onTouchEnded(Touch* touch, Event* event)
  13. {
  14. CCLOG("TouchEnded");
  15. }
  16. void CMyFirstScene::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. }

这段代码,点击到精灵,精灵就会移动。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值