我正在使用Box2d实现联系人监听器,Box2d是C ++ .mm文件。
每当两个气泡碰撞时,我都想知道,以便执行一些操作。这是我的代码:
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已在其文件中正确声明和合成。有人对发生的事情有任何想法吗?谢谢
最佳答案
我建议使用吸气剂,像这样创建您的属性。
@property (nonatomic, assign, getter=isDrag) BOOL dragging;
当然,
@synthesize
它。现在,您可以使用-setDragging:
和[bNodeA isDrag]
。没什么大不了的,但是应该使代码更容易理解。