我们可以在初始化方法中添加如下代码:
-(void)didLoadFromCCB{
Class distanceJointClass = NSClassFromString(@"CCPhysicsSlideJoint");
NSAssert(distanceJointClass, @"Class CCPhysicSlideJoint don't exist!");
for (CCPhysicsJoint *joint in self.physicsBody.joints) {
if ([joint isKindOfClass:distanceJointClass]) {
_lockJoint = joint;
break;
}
}
}
意思很清楚,从自身的joints集合中查找指定类型的关节(这里是查找距离关节)。
但是这段代码有点问题!
如果你在Spring.ccb中添加了多个距离关节,就不管用了。
不幸的是,关节中没有name或tag属性去帮助你简单的标示它们,无论是SpriteBuilder中还是代码中。
无论如何,你可以赋予关节节点一个不同的name来标示它们。你可以在代码中访问关节bodies以及它们的节点(nodes),并且比较节点的名字去找到特定的关节。
用下面的代码取个栗子 ;)
if([joint.bodyA.node.name isEqualToString:@"node A"] && [joint.bodyB.node.name isEqualToString:@"node B"]){
//do something
}
时间: 2024-11-03 06:36:23