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

发布时间:2020-07-22 11:51:04 作者:中游学院
来源:网络 阅读:1145


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. 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. }

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


推荐阅读:
  1. 网络设备配置与管理---使用OSPF实现两个企业网络互联
  2. 网络设备配置与管理--使用RIP实现两个网络互联

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cocos2dx项目 中游学院 coco2d-x培训

上一篇:Go语言中编码规范的使用方法

下一篇:GlusterFS发布时间表 (Release Schedule)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》