我正在用Box2d实现一个C++ .mm文件的Contact Listener。无法从C++文件(Cocos2D/Box2d)中访问对象属性
每当两个气泡相撞时,我想知道,所以我可以执行一些操作。这里是我的代码:
void ContactListener::BeginContact(b2Contact* contact)
{
b2Body* bodyA = contact->GetFixtureA()->GetBody();
b2Body* bodyB = contact->GetFixtureB()->GetBody();
if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL)
{
BubbleSprite* bNodeA = (BubbleSprite*)bodyA->GetUserData();
BubbleSprite* bNodeB = (BubbleSprite*)bodyB->GetUserData();
BOOL oneIsBeingTouched;
if(bNodeA.isDrag == YES || bNodeB.isDrag == YES) oneIsBeingTouched = YES;
...
BubbleSprite的有这表明他们是否正在被用户拖动的property BOOL isDrag
。我得到的问题是:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[CCSprite isDrag]: unrecognized selector sent to instance 0x1ed504a0'
BubbleSprite是CCSprite的子类。 isDrag已在其文件中正确声明并合成。有没有人对发生了什么有什么想法?由于
这里http://stackoverflow.com/questions/10968425/fxlabel-crash-with-uilabel-error是今天另一个类似的问题,通过重新启动xcode和重新导入某些文件到项目来解决。 –
你提到这个代码是“每当两个气泡发生碰撞”时,但你没有检查碰撞是否在两个气泡之间。如果世界上的每个人都是泡沫,那么这仍然可以,但否则你不能假设碰撞是在两个泡泡之间。 – iforce2d