Ios 在动画期间防止Cocos2D接触?

Ios 在动画期间防止Cocos2D接触?,ios,cocos2d-iphone,touches,Ios,Cocos2d Iphone,Touches,在此动画中: - (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { self.isTouchEnabled = NO; if (scoreLabel.opacity == 225) { NSLog(@"fadeOut"); CCSequence *fadeOut = [CCSequence actions:[CCFadeOut actionWithDuratio

在此动画中:

    - (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;
}
但它似乎不起作用。如果我在标签制作动画时触摸屏幕,它会在制作动画的过程中弄乱动画,并且不会做我想做的事情

有什么想法吗


谢谢

我最后这样做是为了防止任何人有同样的问题:

- (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]];
    }
}

我最后这样做是为了防止任何人有同样的问题:

- (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]];
    }
}

如果您不知道,可以将标记指定给操作,方法与将标记指定给节点相同。然后,可以在运行操作的对象上调用getActionByTag:以获取nil或指向该操作的指针。通过检查返回值是否为零或某个动作,您将知道正在播放的特定动作/动画。这样,您就可以在不使用其他变量的情况下执行此操作。

如果您不知道,您可以将标记分配给操作,就像将标记分配给节点一样。然后,可以在运行操作的对象上调用getActionByTag:以获取nil或指向该操作的指针。通过检查返回值是否为零或某个动作,您将知道正在播放的特定动作/动画。这样,您就可以在没有其他变量的情况下执行此操作。

另一种方法是使用单独的布尔变量,控制标签动画时是否忽略新的触摸。另一种方法是使用单独的布尔变量,控制标签动画时是否忽略新的触摸。