box2d 碰撞后的事件只能在ContactListener里定义吗?

void MyContactListener::BeginContact(b2Contact* contact) {

// We need to copy out the data because the b2Contact passed in

// is reused.

CCSprite*spriteA = (CCSprite*)contact->GetFixtureA()->GetBody()->GetUserData();

CCSprite*spriteB = (CCSprite*)contact->GetFixtureB()->GetBody()->GetUserData();

//一般方塊碰撞

if (spriteA.tag == 1&&spriteB.tag == 5)

box2d 碰撞后的事件只能在ContactListener里定义吗?
就是if (spriteA.tag == 1&&spriteB.tag == 5)的事件指派是否能在gamelayer中指派 ??

可以schedule一个任务,在任务中用m_world->GetContactList()获取一个所有Contact类的链表,返回的是链表首节点,用contact->GetNext()就可以实现遍历啦,这样就可以把逻辑处理放在任务中了,不用实现b2ContactListener也可以的