我正在尝试实现一种简单的方法来启用和禁用我班级中的Touch侦听器。我尝试在班上写一个方法:
void HelloWorld::setTouchEnabled(bool enabled)
{
if (enabled)
{
auto _touchListener = EventListenerTouchAllAtOnce::create();
_touchListener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(_touchListener, this);
}
else if (!enabled)
{
_eventDispatcher->removeEventListener(_touchListener);
}
}
我希望能够在此课程的任何其他方法中调用setTouchEnabled(true)
或setTouchEnabled(false)
。但是,这不起作用,因为在函数结束时释放_touchListener
。当我尝试在头文件中声明EventListener *_touchListener
时,我在此行的XCode中收到错误:
_touchListener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
错误表示onTouchesBegan
中没有名为cocos2d::EventListener
的成员。
我认为必须有一个简单的方法来做到这一点。
答案 0 :(得分:2)
你需要先学习C ++:)
首先在您的头文件中定义_touchListener
,作为HelloWorld
的成员。然后修改你的cpp文件:
void HelloWorld::setTouchEnabled(bool enabled)
{
if (enabled)
{
_touchListener = EventListenerTouchAllAtOnce::create();
_touchListener->retain();
_touchListener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(_touchListener, this);
}
else if (!enabled)
{
_eventDispatcher->removeEventListener(_touchListener);
_touchListener->release();
_touchListener = nullptr;
}
}