2012-09-05 48 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;