【发布时间】:2012-11-12 23:29:26
【问题描述】:
大家好,我是 COCOS2DX 框架的新手,正在尝试开发破砖游戏。我正在关注这个演示 Brick breker game 这个教程在 cocos2d (iPhone) 中。我在 cocos2dx 中编码并正常工作。但是当我实现ccTouchesMoved 方法时。我的代码编译并正常运行,但是当我触摸(单击)屏幕时,它会崩溃并出现错误违规行为。我的代码是
void HelloWorld::ccTouchesMoved(CCSet* touches, CCEvent* event)
{
if (_mouseJoint == NULL) return;
CCTouch *myTouch = (CCTouch*)touches->anyObject();
CCPoint location = myTouch->locationInView();
location = CCDirector::sharedDirector()->convertToGL(location);
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
_mouseJoint->SetTarget(locationWorld);
}
我该如何解决这个问题。请指导我。
【问题讨论】:
-
您的代码不检查空指针。也许 touches 为空,也许 myTouch 为空,或者 CCDirector::sharedDirector() 返回 NULL。
-
它在哪一行中断? _mouseJoint->setTarget?
-
是的,它在同一行中断。
-
你好,我得到的解决方案我刚刚评论了
ccTouchesBegan(CCSet* touches, CCEvent* event)检查mousejoint null 方法中的条件。但我不认为它的解决方案。你能告诉我我们如何在没有空值的情况下初始化mousejoint。
标签: c++ visual-c++ cocos2d-x