2

こんにちは、私はCOCOS2DXフレームワークを初めて使用し、ブリックブレーカーゲームを開発しようとしています。私はこのデモブリックブレーカーゲームをフォローしています。このチュートリアルは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);
}

この問題を解決するにはどうすればよいですか。案内してください。

4

2 に答える 2

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

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

_mouseJointをNULLに初期化していない可能性があります。

クラスのコンストラクターで、_mouseJoint=NULL;を初期化します。

于 2012-11-12T15:11:28.117 に答える
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にあります

于 2012-09-06T06:57:44.153 に答える