SpriteKit касается

пожалуйста, помогите мне с методом абстрактных штрихов. У меня есть этот метод на сцене, 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
}

person user3312949    schedule 16.03.2014    source источник


Ответы (1)


Лучший способ избежать того, о чем вы просите, — создать подкласс SKNode (или SKSpriteNode) для каждого узла. Затем это позволяет вам обрабатывать touchesBegan внутри узла подкласса.

Так что просто создайте подкласс SKNode (или SKSpriteNode, поскольку VZChurch является спрайтом) и обработайте touchesBegan в VZChurch в своем собственном файле методов. Затем, если у вас есть другие SKSprites, сделайте то же самое, создайте подкласс каждого спрайта и обработайте touchesBegan внутри соответствующего файла методов подкласса.

person John Riselvato    schedule 17.03.2014
comment
Спасибо, я уже сделал это, и это не работает, но я обнаружил, что проблема была в uiscrollview с zPosition выше, чем zPosition статического вида) - person user3312949; 18.03.2014