触摸事件监听

1.h文件需要虚继承父类的onTouchBeganonTouchMoved onTouchEnded onTouchCancelled,如果需要添加自己实现的内容,到cpp文件实现,如果不实现,直接到头文件加上{}

virtual bool onTouchBegan(Touch* touch, Event *unused_event);

virtual void onTouchMoved(Touch* touch, Event *unused_event){};

virtual void onTouchEnded(Touch* touch, Event *unused_event){};

virtual void onTouchCancelled(Touch *touch, Event *unused_event){};

2、到cpp文件创建监听

//触摸响应注册

auto touchListener = EventListenerTouchOneByOne::create();//创建单点触摸事件监听器

touchListener->setSwallowTouches(true);//不向下传递触摸

touchListener->onTouchBegan = CC_CALLBACK_2(GameLayer::onTouchBegan,this);//触摸开始

touchListener->onTouchMoved = CC_CALLBACK_2(GameLayer::onTouchMoved,this);//触摸移动

touchListener->onTouchEnded = CC_CALLBACK_2(GameLayer::onTouchEnded,this);//触摸结束

_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener,this;//注册分发器

3、实现自己的逻辑代码

bool GameLayer::onTouchBegan(Touch* touch, Event* event) {

    //实现自己的逻辑代码

    return true;//onTouchBegan()函数中返回true,则响应事件不会向下层传递,只会响应本层中的BeganMovedEnded三个函数,如果返回false,则本层后续的MovedEnded函数不会被触发,但是事件会向下层传递。

}

4、注意事项

当一个事件监听器需要重复利用时,需要用clone()方法创建一个新的克隆,因为在使用addEventListenerWithSceneGraphPriorith或者addEventListenerWithFixedPriority方法进行注册时,会对当前使用的事件监听器添加一个已注册的标记,这使得它不能够被添加多次。另外,再使用FixedPriority listeners时,添加完之后需要手动remove,SceneGraphyPriority listenerNode绑定,在Node的析构函数中会被移除。

移除一个已注册的监听器用

_eventDispatcher->removeEventListener(listener);

也可以直接调用removeAllListeners函数,但是不建议这么做,这样做之后所有的事件监听器都不再响应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值