/首先到cocos2d-x项目下的ios文件夹下,找到AppController.mm文件,在函数 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中添加如下函数: [__glView setMultipleTouchEnabled:YES];
bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
}
//开启多触点监听务必调用此函数
setTouchEnabled(true);
CCSprite* sp1 = CCSprite::create("Icon.png");
sp1->setPosition(ccp(150, 200));
addChild(sp1, 0, 23);
CCSprite* sp2 = CCSprite::create("Icon.png");
sp2->setColor(ccc3(0, 255, 0));
sp2->setPosition(ccp(150, 100));
addChild(sp2, 0, 24);
return true;
}
//第一次碰触
void HelloWorld::ccTouchesBegan(cocos2d::CCSet *touches, cocos2d::CCEvent *event)
{
CCSetIterator inter = touches->begin();
for(; inter != touches->end(); inter++)
{
CCTouch* touch = (CCTouch*)(*inter);
CCPoint point = touch->getLocation();
if(touch->getID() == 0) //第一个触点
{
CCSprite* sp1 = (CCSprite*)getChildByTag(23);
sp1->setPosition(point);
}else if(touch->getID() == 1)//第二个触点
{
CCSprite* sp2 = (CCSprite*)getChildByTag(24);
sp2->setPosition(point);
}
}
}
//移动或拖拽
void HelloWorld::ccTouchesMoved(cocos2d::CCSet *touches, cocos2d::CCEvent *event)
{
CCSetIterator inter = touches->begin();
for(; inter != touches->end(); inter++)
{
CCTouch* touch = (CCTouch*) (*inter);
CCPoint point = touch->getLocation();
if(touch->getID() == 0)
{
CCSprite* sp1 = (CCSprite*)getChildByTag(23);
sp1->setPosition(point);
}else if(touch->getID() == 1)
{
CCSprite* sp2 = (CCSprite*)getChildByTag(24);
sp2->setPosition(point);
}
}
}
//用户手指抬起
void HelloWorld::ccTouchesEnded(cocos2d::CCSet *touches, cocos2d::CCEvent *event)
{
}
//多触点的委托监听注册放在onEnter的生命函数中会造成程序异常退出。默认都写在下面函数中。
void HelloWorld::registerWithTouchDispatche()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
}
//删除多触点的委托监听
void HelloWorld::onExit()
{
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
//这句务必要写
CCLayer::onExit();
}