标签:style class blog code color 使用
在项目开发中,我们做的大地图,一个手指头按下滑动可以拖动大地图,两个手指头按下张开或者闭合,可以放大和缩小地图
在实现这个功能的时候,需要使用到cocos2d-x的多点触控功能。
多点触控事件,并不是说你按下了两个手指,执行ccTouchesMoved的时候,pTouches的count为2,这样如果单纯的判断函数传入的参数,实现起来会比较困难。
我用一种方式实现了,感觉还是比较简单明了的,拿出来分享一下
cocos2d-x版本:cocos2d-x 2.2.0
目标平台:ios
1、首先在AppController.mm中设置开启多点触控
[__glView setMultipleTouchEnabled:YES];
2、在HelloWorldScene.cpp中得init函数中开启响应触摸事件
setTouchEnabled(true);
3、重写父类的三个函数
virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
4、在类头文件中定义一个CCArray,用来保存CCTouch对象的指针
cocos2d::CCArray* m_touchPoints;
5、在构造函数和析构函数中对CCArray进行初始化retain和release
HelloWorld::HelloWorld()
{
m_touchPoints = CCArray::create();
m_touchPoints->retain();
}
HelloWorld::~HelloWorld()
{
m_touchPoints->release();
m_touchPoints = NULL;
}
6、当一个手指按下以后,不论是刚按下的时候,调用的ccTouchesBegan,还是滑动的过程中调用的ccTouchesMoved,还是抬起的时候调用ccTouchesEnded,函数的参数都是同一个CCTouch对象。
所以,我们在执行ccTouchesBegan函数的时候,把该对象加入到我们定义的CCArray中,在ccTouchesMoved函数中判断我们自定义的数组的长度,如果是1,就执行拖动地图的动作,如果是2,就执行缩放的动作,更多的动作也都可以灵活的增加
在ccTouchesEnded的时候,在CCArray中移除掉当前的这个CCTouch对象。
void HelloWorld::ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
//将CCTouch对象加入数组
int count = pTouches->count();
CCSetIterator iter = pTouches->begin();
for (int i=0; i<count; i++) {
CCTouch* pTouch = (CCTouch*)(*iter++);
m_touchPoints->addObject(pTouch);
}
}
void HelloWorld::ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
if (m_touchPoints->count() == 1)//移动
{
CCLog("move");
}
else if (m_touchPoints->count() == 2)//缩放
{
CCLog("scale");
}
}
void HelloWorld::ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
//将CCTouch对象从数组中移除
int count = pTouches->count();
CCSetIterator iter = pTouches->begin();
for (int i=0; i<count; i++) {
m_touchPoints->removeObject(*iter++);
}
}
本人才疏学浅,如果有哪里写的不对的地方,还请指针,我马上修改!
【原】cocos2d-x开发笔记:多点触控,布布扣,bubuko.com
标签:style class blog code color 使用
原文地址:http://www.cnblogs.com/Androider123/p/3790680.html