Предотвратить касания Cocos2D во время анимации? - PullRequest
0 голосов
/ 19 ноября 2011

В этой анимации здесь:

    - (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    self.isTouchEnabled = NO;
    if (scoreLabel.opacity == 225) {
        NSLog(@"fadeOut");
        CCSequence *fadeOut = [CCSequence actions:[CCFadeOut actionWithDuration:0.5], [CCCallFuncN actionWithTarget:self 
        selector:@selector(enableTouches)], nil];
        [scoreLabel runAction:fadeOut];
        [livesLabel runAction:[[fadeOut copy] autorelease]];
    }
    else {
        NSLog(@"fadeIn");
        CCSequence *fadeIn = [CCSequence actions:[CCFadeIn actionWithDuration:0.5], [CCCallFuncN actionWithTarget:self 
        selector:@selector(enableTouches)], nil];
        [scoreLabel runAction:fadeIn];
        [livesLabel runAction:[[fadeIn copy] autorelease]];
         }
}

Я пытаюсь просто исчезнуть / добавить ярлыки. Дело в том, что я хочу, чтобы убедился, , что этот метод не будет вызываться во время анимации меток.

Если вы посмотрите в коде, я попытаюсь сделать это, вызвав этот метод:

    - (void)enableTouches {
    NSLog(@"ET");
        self.isTouchEnabled = YES;
}

Но, похоже, это не работает. Если я прикоснусь к экрану во время анимации надписей, он испортит анимацию на полпути и не сделает то, что я хочу.

Есть идеи?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Я закончил этим, если у кого-то возникла такая же проблема:

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
    self.isTouchEnabled = NO;

    if(label1.opacity == 0 )
    {
        CCFadeIn* fadeIn = [CCFadeIn actionWithDuration:0.5];
        CCCallBlock* fadeCompleted = [CCCallBlock actionWithBlock:^{ self.isTouchEnabled = YES; }];     

        [label1 runAction:[CCSequence actions:fadeIn, fadeCompleted, nil]];
        [label2 runAction:[[fadeIn copy] autorelease]];
    }
    else
    {
        CCFadeOut* fadeOut = [CCFadeOut actionWithDuration:0.5];
        CCCallBlock* fadeCompleted = [CCCallBlock actionWithBlock:^{ self.isTouchEnabled = YES; }];     

        [label1 runAction:[CCSequence actions:fadeOut, fadeCompleted, nil]];
        [label2 runAction:[[fadeOut copy] autorelease]];
    }
}
1 голос
/ 19 ноября 2011

Если вы не знали, вы можете назначить теги для действий так же, как вы можете назначить теги для узлов.Затем вы можете вызвать getActionByTag: для объекта, который выполняет действие, чтобы получить ноль или указатель на действие.Проверяя, является ли возвращаемое значение ноль или действие, вы узнаете, воспроизводится ли определенное действие / анимация, которые вы ищете.Таким образом, вы можете сделать это без дополнительных переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...