Cocos2d-x 触摸事件的创建、优先级和吞噬

触摸优先级

触摸事件的优先级,值越小,优先级越高,比如层1的优先级是-50,层2的优先级是-100,那么层2会先接收并处理触摸事件,然后才有机会轮到层1来接收处理。
注意:这是针对2.x版本,3.x版本层的触摸点击事件直接与层的Z-Order相关,不需要再设优先级priority,Z-Order越大,则越先触发,越小则越晚触发。

吞噬触摸事件

swallow事件,表示当前层是否吞噬掉这个触摸,即不往优先级更低的层传送。

创建触摸监听器

创建一个单点触碰监听器

auto listener = EventListenerTouchOneByOne::create();

配置触摸监听器的属性,设置监听是否吞并事件

listener->setSwallowTouches(true);

设置监听器的回调函数

listener->onTouchBegan = CC_CALLBACK_2(MyUIDrama::TouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(MyUIDrama::TouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(MyUIDrama::TouchesEnded, this);
  • onTouchBegan:触碰按下时调用
  • onTouchMoved:触碰移动时调用
  • onTouchEnded:触碰弹起时调用

添加触摸监听器

有两种方法

  • 方法一:addEventListenerWithFixedPriority

    Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 1);

    addEventListenerWithFixedPriority有两个参数:
    参数1:Listenter 监听器
    参数2:fixedPriority 固定优先级,其中0是系统占有,不能设置为0

  • 方法二:addEventListenerWithSceneGraphPriority

    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
    

    addEventListenerWithSceneGraphPriority有两个参数:
    参数1:Listenter 监听器
    参数2:node 根据node来确定监听器的优先级

两种方法的区别就是一个是自己手动指定Listenter的优先级,一个是根据node来决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值