我已经开始在iphone中使用cocos2d-x了。我已经创建了一个继承自cclayer的类。现在,当我尝试用touch dispatcher注册它时,它崩溃了。
在.h文件中:
类BasePage : public cocos2d::CCLayer
和.m文件:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, INT_MIN + 1, true);并在ccobject.m文件中崩溃:
void CCObject::retain(void)
{
CCAssert(m_uReference > 0, "reference count should greater than 0");[here is crash]
++m_uReference;
}你能给我一些解决方案吗?
发布于 2013-09-03 10:42:03
bool SampleLayer::init()
{
if (!CCLayer::create())
return false;
setTouchEnabled(true);
return true;
}
void SampleLayer::onEnter()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
CCNode::onEnter();
}
void SampleLayer::onExit()
{
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCNode::onExit();
}
bool SampleLayer::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
return true;
}
void SampleLayer::ccTouchMoved(CCTouch* touch, CCEvent* event)
{}
void SampleLayer::ccTouchEnded(CCTouch* touch, CCEvent* event)
{}发布于 2013-12-13 17:02:09
您只能在.m(或.cpp)文件中写入此行
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);发布于 2014-04-30 13:11:09
事实上,您不需要实现自己的RegisterTouchDispatcher。
只需在构造函数或onEnter中调用下面的方法
setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);基类将为您完成所有的杂乱工作。
此外,如果您想启用多点触控,则应将触控模式设置为kCCTouchesAllAtOnce
ps:如果您在自己的类中重写onEnter,请记住在您自己的onEnter函数中调用BaseClass::onEnter(),如
MyLayer::onEnter()
{
CCLayer::onEnter();
// do my own stuff
}https://stackoverflow.com/questions/11734762
复制相似问题