cocos2dx 3.0 触摸机制

cocos2dx 3.0版本中废弃了2.x的触摸机制。在Layer中,onTouchBegan返回true将允许后续事件并阻止向后层传递,返回false则阻止本层后续事件并继续传递。单点触摸使用时,setSwallowTouches(true)可防止底层精灵受影响。多点触摸时,通过Director获取EventDispatcher,管理各种事件监听器,如触摸、键盘、加速、鼠标及自定义事件。
摘要由CSDN通过智能技术生成


在cocos2dx 3.0版本中,废弃了以往2.x版本的写法,我们先来看一下Layer.h中的一段代码


/* Callback function should not be deprecated, it will generate lots of warnings.
	Since 'setTouchEnabled' was deprecated, it will make warnings if developer overrides onTouchXXX and invokes setTouchEnabled(true) instead of using EventDispatcher::addEventListenerWithXXX.
    */
	//单点触摸
	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);
	//多点触摸
    virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event);
    virtual void onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event);
    virtual void onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event);
    virtual void onTouchesCancelled(const std::vector<Touch*>&touches, Event *unused_event);

 

单点触摸:(即只有注册的Layer才能接收触摸事件)

 onTouchBegan:如果返回true:本层的后续Touch事件可以被触发,并阻挡向后层传递

                                 如果返回false,本层的后续Touch事件不能被触发,并向后传递

简单点来说,如果

1.Layer 只有一层的情况:

virtual bool onTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
a.返回false,则ccTouchMoved(),ccTouchEnded()不会再接收到消息
b.返回tru
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值