使Sprite响应鼠标点击

时间:2014-07-26 20:54:57

标签: objective-c xcode sprite-kit

我有一个场景(SKScene),其中,每当执行一次点击时,球(SKSprtieNode)就会从该点掉落。 现在我要做的是,无论何时进行球的咔嗒声,球都应该反弹或什么的。

我在GameScene.m中拥有的是

- (void)mouseDown:(NSEvent *)theEvent {
   CGPoint location = [theEvent locationInNode:self];
   [self addBallAtLocation:location];
}

- (void)addBallAtLocation:(CGPoint) location {
   Ball *ball = [Ball new];

   ball.position = location;
   [self addChild:ball];
}

在Ball.m中,我将反弹动作添加到mouseDown方法:

- (void)mouseDown:(NSEvent *)theEvent{
   CGPoint point = [theEvent locationInNode:self];

   CGVector impulse = CGVectorMake(point.x * 5.0, point.y * 5.0);

   [self.physicsBody applyImpulse:impulse];
}

现在即使点击现有的球,也会创建一个新球。我认为自从我点击它之后就会调用球的mouseDown方法,如果不存在,则会调用场景的mouseDown方法。

P.S。我觉得这可以通过代表来解决,我很容易出错,但由于我并不完全清楚使用它们,所以我没有。如果您认为这可能是解决此问题的好方法,请使用它们,因为它可以帮助我了解如何使用它们。

1 个答案:

答案 0 :(得分:0)

默认情况下,SKSpriteNodeuserInteractionEnabled属性设置为NO(当然是出于性能原因)。您只需将其设置为YES,您的事件处理方法将被调用:)