Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 释放鼠标点时获取精灵位置时出现EXC_BAD_访问错误_Cocos2d Iphone_Box2d_Exc Bad Access_Box2d Iphone - Fatal编程技术网

Cocos2d iphone 释放鼠标点时获取精灵位置时出现EXC_BAD_访问错误

Cocos2d iphone 释放鼠标点时获取精灵位置时出现EXC_BAD_访问错误,cocos2d-iphone,box2d,exc-bad-access,box2d-iphone,Cocos2d Iphone,Box2d,Exc Bad Access,Box2d Iphone,我试图在释放移动精灵的鼠标点时获得精灵的确切位置(即使精灵可能仍在移动)并显示它。我正在使用Cocos2d和Box2d。下面是ccTouchesEnded方法的代码 请注意: - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if (mouseJoint) { b2Fixture *fixture; CCSprite *mySprite = (CCSprite *) fixture->

我试图在释放移动精灵的鼠标点时获得精灵的确切位置(即使精灵可能仍在移动)并显示它。我正在使用Cocos2d和Box2d。下面是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_访问错误,指向该行:

CCSprite *mySprite = (CCSprite *) fixture->GetUserData();

我真的不知道怎么了。请帮忙

由于夹具尚未初始化,您将收到该错误,请查看此 他是如何环游世界所有元素的

for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) {
    if (b->GetUserData() != NULL) {
        CCSprite *curSprite = (CCSprite *)b->GetUserData();
...
    }
}

在执行GetUserData()之前,必须为装置分配一些内容。

谢谢。我已经做了更改,但我发现CCLOG没有出现。以下是新的ccTouchesEnded代码:
-(void)ccTouchesEnded:(NSSet*)接触事件:(UIEvent*)事件{if(mouseJoint){for(b2Body*b=world->GetBodyList();b;b=b->GetNext()){if(b->GetUserData()!=NULL){CCSprite*mySprite=(CCSprite*)b->GetUserData();if(mySprite.tag==1){CGPoint spritePosition=mySprite.position;CCLOG(@“sprite位置是x:%0.2f,y:%0.2f”,spritePosition.x,spritePosition.y);}}}}}}}world->DestroyJoint(mouseJoint);mouseJoint=NULL;}
:请查看后续内容