首页 > 其他 > 详细

cocos2dx触摸

时间:2014-04-16 16:41:25      阅读:512      评论:0      收藏:0      [点我收藏+]

两种方法其实都一样,CCLayer也是继承CCTouchDelegate。

1、继承CCTouchDelegate

添加触摸代理

CCTouchDispatcher* pDispatcher = CCDirector::sharedDirector()->getTouchDispatcher();

单点触摸用pDispatcher->addTargetedDelegate();

多点触摸用pDispatcher->addStandardDelegate();

 

在onExit里把代理移除

CCDirector* pDirector = CCDirector::sharedDirector();

pDirector->getTouchDispatcher()->removeDelegate(this);

 

重写触摸处理

a、单点触摸处理

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);

 

b、多点触摸处理

virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent);

 

 

2、继承CCLayer

重写onEnter、onExit函数

xxx::onEnter()

{

setTouchEnabled(true);

    setTouchMode(kCCTouchesOneByOne单点、kCCTouchesAllAtOnce多点);

    CCLayer::onEnter();

}

xxx::onExit()

{

CCLayer::onExit();

}

 

重写触摸处理

a、单点触摸处理

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);

 

b、多点触摸处理

virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent);

 

还有触摸优先级的设置等,另外单点触摸的ccTouchBegan函数里返回true可以禁止触摸向下传递。

cocos2dx触摸,布布扣,bubuko.com

cocos2dx触摸

原文:http://www.cnblogs.com/xdao/p/cocos2dx_touch.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!