简体   繁体   English

在createfixture上的exc_bad_access

[英]exc_bad_access on createfixture

I got a class called block. 我上了一堂课,叫做街区。 In this class I load a sprite, make a b2bodydef and a fixturedef. 在此类中,我加载一个精灵,创建一个b2bodydef和一个fixturedef。 In another class I make 2 blocks, add them to a vector and then loop the vector to create fixtures: 在另一个类中,我制作2个块,将它们添加到向量中,然后将向量循环以创建固定装置:

Block *b = new Block(5, 20);
this->addChild(b->sprite);
blocks.push_back(b);


Block *b1 = new Block(15, 35);
this->addChild(b1->sprite);
blocks.push_back(b1);

b2Body *blockbody;
for(int i = 0; i<blocks.size();i++)
{
    b2BodyDef def = blocks[i]->blockbodydef;
    blockbody = world->CreateBody(&def);
    if(blockbody == NULL)
        cocos2d::CCLog("blockbody is null");
    blockbody->CreateFixture(&blocks[i]->blockshapedef);
}

I get the error "exc_bad_access" on the last line. 我在最后一行收到错误“ exc_bad_access”。

This is my block.h: 这是我的block.h:

class Block
{

public:
    cocos2d::CCSprite *sprite;
    Block(float x, float y);
    b2BodyDef blockbodydef;
    b2FixtureDef blockshapedef;
};

and .cpp: 和.cpp:

Block::Block(float x, float y)
{
sprite = cocos2d::CCSprite::create("Block.png");
sprite->setPosition(ccp(x,y));

blockbodydef.type = b2_kinematicBody;
blockbodydef.position.Set(x/PTM_RATIO,y/PTM_RATIO);
blockbodydef.userData = sprite;


b2PolygonShape blockPoly;
blockPoly.SetAsBox(37.5/PTM_RATIO , 37.5 / PTM_RATIO);

blockshapedef.shape = &blockPoly;
blockshapedef.density = 2.0f;
blockshapedef.friction = 0.2f;
blockshapedef.restitution = 0.8f;
}

blockbody isn't null, neither is blockshapedef. blockbody不为null,blockshapeef也为null。 Any tips? 有小费吗?

Solved the problem. 解决了问题。 Removing b2PolygonShape blockPoly; 删除b2PolygonShape blockPoly; from the .cpp and adding it to the .h file did the trick. 从.cpp中并将其添加到.h文件中就可以了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM