ccTouchesMoved в cocos2dx

Привет всем, я новичок в платформе 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);
}

Как я могу решить эту проблему. Пожалуйста, ведите меня.

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

2

Другие решения

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

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

Может быть, вы не инициализируете _mouseJoint в NULL.

В конструкторе вашего класса инициализируйте _mouseJoint = NULL;

3

По вопросам рекламы [email protected]