DidBeginContact 在另一个 class
DidBeginContact in another class
我想在另一个 class 中处理我所有的联系人。我真的不知道该怎么做,所以我是这样做的:
HandleContact 是 SKNode
的子 class
-(void)didBeginContact:(SKPhysicsContact *)contact {
HandleContact *handleContact = [[HandleContact alloc]
initWithBodyA:contact.bodyA.node bodyB:contact.bodyB.node
scene:self];
}
一切正常,但我收到此错误:
Unused variable 'HandleContact'
那么我应该怎样做才正确呢? (也许我应该使用另一种类型?)
您当前的代码存在内存泄漏。每次注册联系人时,您都会实例化一个 HandleContact class。如果你想要一个 class 来处理你的联系人,我建议你在代码的开头实例化它并保留对它的引用。像 (void)didMoveToView:(SKView *)view
这样的地方
您需要问自己的问题是,为什么您需要 class 来处理您的联系人?如果您希望组织代码,可以从 didBeginContact
中调用不同的方法。
-(void)didBeginContact:(SKPhysicsContact *)contact {
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (CategoryAlpha | CategoryBeta))
[self myMethod1];
}
我想在另一个 class 中处理我所有的联系人。我真的不知道该怎么做,所以我是这样做的:
HandleContact 是 SKNode
的子 class-(void)didBeginContact:(SKPhysicsContact *)contact {
HandleContact *handleContact = [[HandleContact alloc]
initWithBodyA:contact.bodyA.node bodyB:contact.bodyB.node
scene:self];
}
一切正常,但我收到此错误:
Unused variable 'HandleContact'
那么我应该怎样做才正确呢? (也许我应该使用另一种类型?)
您当前的代码存在内存泄漏。每次注册联系人时,您都会实例化一个 HandleContact class。如果你想要一个 class 来处理你的联系人,我建议你在代码的开头实例化它并保留对它的引用。像 (void)didMoveToView:(SKView *)view
您需要问自己的问题是,为什么您需要 class 来处理您的联系人?如果您希望组织代码,可以从 didBeginContact
中调用不同的方法。
-(void)didBeginContact:(SKPhysicsContact *)contact {
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (CategoryAlpha | CategoryBeta))
[self myMethod1];
}