3.0rc和2.X版本的注册触屏响应时间有点不一样了
//添加一个单点监听
auto listener = EventListenerTouchOneByOne::create();
//监听的回调函数
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
//添加一个多点监听
auto listener2 = EventListenerTouchAllAtOnce::create();
listener2->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
listener2->onTouchesMoved = CC_CALLBACK_2(HelloWorld::onTouchesMoved, this);
listener2->onTouchesEnded = CC_CALLBACK_2(HelloWorld::onTouchesEnded, this);
//将监听委派到这个layer,并设置优先级
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addEventListenerWithSceneGraphPriority(listener2, this);
dispatcher->setPriority(listener2, 1);
单点的回调函数
bool HelloWorld::onTouchBegan(Touch *touch, Event *unused_event)
{
Point point = touch->getLocation();
CCLOG("x=%f , y=%f", point.x, point.y);
return true;
}
void HelloWorld::onTouchMoved(Touch *touch, Event *unused_event)
{
//CCLOG("bbb");
}
void HelloWorld::onTouchEnded(Touch *touch, Event *unused_event)
{
//CCLOG("ccc");
}
多点的回调函数
void HelloWorld::onTouchesBegan(const std::vector<Touch*>& touches, cocos2d::Event *unused_event)
{
for (auto &item : touches)
{
auto touch = item;
auto location = touch->getLocation();
auto sp = Sprite::create("CloseSelected.png");
sp->setPosition(location);
this->addChild(sp);
CCLOG("touched x=%f , y=%f", location.x, location.y);
}
}
void HelloWorld::onTouchesMoved(const std::vector<Touch*>& touches, cocos2d::Event *unused_event)
{
}
void HelloWorld::onTouchesEnded(const std::vector<Touch*>& touches, cocos2d::Event *unused_event)
{
}