我试图在移动精灵的鼠标点被释放时获得精灵的确切位置(即使精灵可能仍在移动)并显示它。我正在使用Cocos2d和Box2d。下面是代码ccTouchesEnded方法。
ccTouchesEnded:
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (mouseJoint)
{
b2Fixture *fixture;
CCSprite *mySprite = (CCSprite *) fixture->GetUserData();
NSInteger attachedSprite = mySprite.tag;
if (attachedSprite == 1) {
CGPoint spritePosition = mySprite.position;
CCLOG(@"the sprite position is x:%0.2f, y:%0.2f", spritePosition.x, spritePosition.y);
}
world->DestroyJoint(mouseJoint);
mouseJoint = NULL;
}
}
我一直收到指向该行的EXC_BAD_ACCESS错误:
CCSprite *mySprite = (CCSprite *) fixture->GetUserData();
我不确定是什么问题。请帮忙。
答案 0 :(得分:1)
由于夹具尚未初始化,您收到该错误,请查看此信息 tutorial,他如何遍历所有世界元素
for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) {
if (b->GetUserData() != NULL) {
CCSprite *curSprite = (CCSprite *)b->GetUserData();
...
}
}
在执行GetUserData()
之前,您必须为夹具指定一些东西