我正在用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