cclayer的触摸处理(ccTouch)

本文详细解析了ccLayer在Unity中的触摸响应机制,包括单点触摸和多点触摸的实现方式及注意事项,旨在帮助开发者更好地进行交互设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要使用ccLayer,必要要处理它的触摸响应。否则就少了必要的交互。
关于ccLayer的触摸有两种类型。
1) 单点触摸
2) 多点触摸
下面分别总结一下:
1) 单点触摸
要使用单点触摸,必须要重写以下几个接口:
 virtual void onEnter();//必须
 virtual void onExit();//必须
 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);//必须
 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);//可选,但一般情况下要
 virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);//可选,但一般情况下要
 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);//可选
a) onEnter();接口。在此接口中,需要调用父类的该接口,并且最重要的,要为当前对象注册一个触摸委托(即:代理)。参考如下代码:
 CCLayer::onEnter();
 CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);
b) onExit();接口。在此接口中,需要将在onEnter()中注册的当前对象的触摸委托给移除掉。然后调用父类的onExit();。参考代码如下:
 CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);
 CCLayer::onExit();
c) ccTouchBegan();该接口,细心的人可能会发现,就它是返回bool的。它的返回值决定着,后续的ccTouchMoved();ccTouchEnded();ccTouchCancelled();是否触发。只有返回true时才触发。
关于ccTouchBegan();ccTouchMoved();ccTouchEnded();ccTouchCancelled();的作用,在此我就不多说了。看名字我想就应该能清楚。

2) 多点触摸
要使用多点触摸。则只需要实现重写如下几个接口,即可:
 virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
 virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
 virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
它们的作用我也不多说。下面简要介绍下CCSet*对象。它存储着所有的触摸信息。即:遍历它,可以处理所有的触摸点响应。其他的用法同单点触摸一样。
注意:用多点触摸时,不需要注册上面第 1) 点中的a)与b)小点的信息。(如果我没记错的话,处理了,可能会让程序蹦掉。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值