Cocos2d-x 3.10 学习笔记之触摸事件

记录一下触摸事件的创建与使用

    auto listener = EventListenerTouchOneByOne::create();//创建一个监听器
    listener->setSwallowTouches(true);//不向下传递触摸

    //触摸开始
    listener->onTouchBegan = [=](Touch* touch, Event* event) {
        log("onTouchBegan");
        //获取触摸目标
        auto target = dynamic_cast<Sprite*>(event->getCurrentTarget());
        //获取触摸点
        Point locationInNode = target->convertToNodeSpace(touch->getLocation());
        //获取目标的轮廓大小
        Size s = target->getContentSize();
        //区域位置(x,y,width,height)
        Rect rect = Rect(0, 0, s.width, s.height);
        //判断触摸点是否在目标轮廓区域内
        if (rect.containsPoint(locationInNode)) {
            auto moveToAction = MoveTo::create(1, Vec2(150, 200));
            _skill_1->runAction(moveToAction);
            return true;//在,返回true
        }
        else {
            return false;//不在,返回false
        }
    };

    //触摸移动
    listener->onTouchMoved = [](Touch* touch, Event* event) {
        log("onTouchMoved");
    };

    //触摸结束
    listener->onTouchEnded = [=](Touch* touch, Event* event) {
        log("onTouchEnded");
        auto moveToAction = MoveTo::create(1, Vec2(150, 120));
        _skill_1->runAction(moveToAction);
    };

    //触摸取消
    listener->onTouchCancelled = [](Touch* touch, Event* event) {
        log("onTouchEnded");
    };

    //最后将精灵添加到事件监听器中
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, _skill_1);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,133评论 4 26
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,100评论 51 603
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,455评论 25 708
  • 文/言新辰 嘿,你还好吗? 其实在下笔之前,我是不知道要怎么开始写这封信的,我甚至不知道要跟你说什么以及我到底想要...
    言新辰阅读 238评论 2 1
  • 2017年10月14日 我注册了一个达人店 也就说我现在是一个小小的店主了 做这个也是因为我好朋友的关系 我觉得和...
    迟来yz阅读 247评论 0 0