SpriteKit触动了

时间:2014-03-16 11:35:45

标签: objective-c sprite-kit skspritenode

请帮我抽象接触开始的方法。 我现场有这种方法,VZChurch它的SKSpriteNode。有没有办法在SKSpriteNode的子类内部转换触摸开始方法,因为我认为5-6 if else语句没有发光决定,所以我试图在SKSpriteNode的每个子类中找到迁移触摸的方法

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self.mapStaticGeometry];
    SKNode *node = [self.mapStaticGeometry nodeAtPoint:location];

    if ([node.name isEqualToString:@"church"]) {

        VZChurch *obj = (VZChurch *)node;
        obj.requestedAnimation = VZAnimationStateTouch;
        [obj runAnimation];
    } else if ...n iterations
}

1 个答案:

答案 0 :(得分:0)

避免您要求的最佳方法是为每个节点子类化SKNode(或SKSpriteNode)。然后,这允许您处理子类节点内的touchesBegan

因此,只需将SKNode(或SKSpriteNode,因为VZChurch是精灵)子类化,并处理touchesBegan中的VZChurch,它就是它自己的方法文件。然后,如果你有其他SKSprites,做同样的事情,子类化每个sprite并处理它们各自的子类方法文件中的touchesBegan