大家好,我是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);
}
如何解决此问题。请指导我。
答案 0 :(得分:3)
void ClassName::ccTouchesBegan(NSSet *touches, UIEvent* event )
{
if (_mouseJoint != NULL) return;
...
}
可能是你没有将_mouseJoint初始化为NULL。
在类的构造函数中,初始化_mouseJoint = NULL;
答案 1 :(得分: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