2012-09-05 43 views
2

大家好,我是新的COCOS2DX框架,并试图开发砖破碎机游戏。我正在关注此演示Brick breker game本教程位于cocos2d(iPhone)中。我在cocos2dx中编写代码并正确工作。但是当我实施ccTouchesMoved的方法。我的代码编译和运行正常,但随着我触摸(单击)屏幕下来,并给错误违反ocures。我的代码是ccTouchesMoved在cocos2dx

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); 
} 

我该如何解决此问题。请指导我。

在您提供的演示
+0

您的代码不检查空指针。也许touch是null,也许myTouch是,或者CCDirector :: sharedDirector()返回NULL。 –

+0

哪条线突破? _mouseJoint-> setTarget? –

+0

是的,它打破了同一条线。 –

回答

2

,下面的代码初始化mouseJoint

if (_paddleFixture->TestPoint(locationWorld)) { 
    b2MouseJointDef md; 
    md.bodyA = _groundBody; 
    md.bodyB = _paddleBody; 
    md.target = locationWorld; 
    md.collideConnected = true; 
    md.maxForce = 1000.0f * _paddleBody->GetMass(); 

    _mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md); 
    _paddleBody->SetAwake(true); 
} 

它是在ccTouchesBegan

3
void ClassName::ccTouchesBegan(NSSet *touches, UIEvent* event) 
{ 

     if (_mouseJoint != NULL) return; 
     ... 
} 

可能是你没有初始化_mouseJoint为NULL。

在你的类的构造函数中,初始化_mouseJoint = NULL;