Cocos2d iphone 确定给定一个类变量的类的实例
嗨,伙计们,我现在被困在这里的一个应用程序工作。问题是我有一个类,它创建了许多实例,每个实例都由一个ccphysisprite和一个b2body组成。在与任何其他类中的任何其他对象碰撞期间,该特定实例应该消失。现在我已经创建了一个联系人侦听器来确定联系人,问题是我需要访问特定实例才能销毁它。充其量,我能够访问它的CCPhysicsPrite和它的标记,但不能真正获得该类的特定实例。我希望有人能帮助我。将实例作为用户数据传递到box2d正文中。当发生冲突时,您可以通过将用户数据void指针回调到其正确的类型来检索实例,并相应地进行处理Cocos2d iphone 确定给定一个类变量的类的实例,cocos2d-iphone,box2d,box2d-iphone,Cocos2d Iphone,Box2d,Box2d Iphone,嗨,伙计们,我现在被困在这里的一个应用程序工作。问题是我有一个类,它创建了许多实例,每个实例都由一个ccphysisprite和一个b2body组成。在与任何其他类中的任何其他对象碰撞期间,该特定实例应该消失。现在我已经创建了一个联系人侦听器来确定联系人,问题是我需要访问特定实例才能销毁它。充其量,我能够访问它的CCPhysicsPrite和它的标记,但不能真正获得该类的特定实例。我希望有人能帮助我。将实例作为用户数据传递到box2d正文中。当发生冲突时,您可以通过将用户数据void指针回调到其
// C++ example
void SomeClass::BeginContact(b2Contact* contact)
{
b2Body* bA = contact->GetFixtureA()->GetBody();
b2Body* bB = contact->GetFixtureB()->GetBody();
b2MetaData* bAMeta = (b2MetaData*)bA->GetUserData();
b2MetaData* bBMeta = (b2MetaData*)bB->GetUserData();
delete bAMeta;
delete bBMeta;
}
如果该实例是Objective-C实例,则可能必须使用__桥转换。
更多关于如何使用它的信息,你可以在这里找到
请记住,删除box2d实体本身必须在世界步骤之外完成,因此,如果您只是以某种方式标记要删除的实体(其中有一个标志,或者可能将其添加到名为toBeRemoved的列表中),并且在该步骤结束后,您可以在容器上迭代删除box2d实体。显示一些代码。通常,box2d正文的userData字段有一个指向CCphysisPrite实例的指针。因此,如果您可以访问ccphysisprite对象,那么这就是您要查找的实例。除非你在找问题中没有提到的第三类?