Cocos2d iphone 重新启动游戏后cocos2d中的进度时间条消失

Cocos2d iphone 重新启动游戏后cocos2d中的进度时间条消失,cocos2d-iphone,progress-bar,Cocos2d Iphone,Progress Bar,我创建了一个问答游戏,它实现了一个时间条。在第一次游戏中,这是可以的,但如果在游戏结束后,玩家点击“重新启动”,游戏将正常进行,但时间条消失 下面是我从GameOverLayer到游戏的代码: -(void) restart { [[CCDirector sharedDirector] replaceScene:[HelloWorldLayer node]]; } 这里是创建新问题的函数 -(void)creaDomanda{ //bar CCProgressFrom

我创建了一个问答游戏,它实现了一个时间条。在第一次游戏中,这是可以的,但如果在游戏结束后,玩家点击“重新启动”,游戏将正常进行,但时间条消失

下面是我从GameOverLayer到游戏的代码:

-(void) restart {
    [[CCDirector sharedDirector] replaceScene:[HelloWorldLayer node]];
}
这里是创建新问题的函数

-(void)creaDomanda{

    //bar
    CCProgressFromTo *to1 = [CCProgressFromTo actionWithDuration:MaxTime from:100 to:0];
    bar = [CCProgressTimer progressWithFile:@"barra.png"];
    bar.type = kCCProgressTimerTypeHorizontalBarLR;
    [bar setPosition:ccp(size.width - 250 , size.height - 18)];

    int randomValue =  (arc4random() % 4) + 1; 
    NSString *stringa = [NSString stringWithFormat:@"Domanda%i", randomValue];
    dictionary = [plistData objectForKey:stringa];
    domanda = [dictionary valueForKey:@"Titolo"];
    labelDomanda = [CCLabelTTF labelWithString:domanda fontName:@"Marker Felt" fontSize:24];
    labelDomanda.position =  ccp( size.width /2 , 400 );
    [self addChild: labelDomanda];
    int rispostaEsatta = [[dictionary valueForKey:@"Soluzione"] intValue];
    menu = [CCMenu menuWithItems:nil];
    for (int i = 1; i<5;i++)
    {
        if(rispostaEsatta == i){
item = [CCMenuItemFont itemFromString:[dictionary valueForKey:
                                                               [NSString stringWithFormat:@"Risposta%i",i] ]
                                                       target:self selector:@selector(corretto)];
        }else{
            item = [CCMenuItemFont itemFromString:[dictionary valueForKey:
                                                               [NSString stringWithFormat:@"Risposta%i",i] ]
                                                       target:self selector:@selector(sbagliato)];
        }
        [menu addChild:item];
    }
//[..]
    [self addChild:menu];
    [self addChild:bar];
    [bar runAction:to1];
}
有人能解释一下为什么我重新启动时间条除盐器吗? 谢谢你

我的最佳猜测:

CCProgressFromTo操作仍在运行。由于它向下发展到0,CCProgressTimer最终不再显示它的任何部分。即使在进度计时器上运行另一个CCProgressFromTo操作,此操作也可能继续

解决方案:请确保在运行另一个CCProgressFromTo操作之前停止任何正在运行的CCPROGRESTO操作


如果这还不能解决问题,那么我想CCProgressTimer需要通过将百分比设置回100来重置。

离题:阅读意大利语代码很有趣:)而且它让我饿了!:谢谢你!我试着翻译一些变量以使代码更清晰:)但是谢谢:)并且为我的所有问题感到抱歉,但是如果我想在时间过去后调用一个方法(错误的答案),我该怎么做?类似于“if(Time==0){[self-performSelector:@selector(sbagliato)with-object:nil];}”之类的东西?我会试着写下结果,而不是“时间”。但是,为什么每次生成的新问题都会正确地重新初始化,并且在重新启动后不会发生这种情况呢?抱歉,它无法修复它。这可能是因为每次生成一个新问题时,该方法都会删除上一个栏并重新创建一个新栏,从而重置特定项!我不明白为什么(newquestion)的所有其他部分都能正常工作,但对于这一部分来说是不一样的!似乎没有什么办法解决这个问题。我已经解决了与酒吧(僵尸对象)相关的其他问题,但对于这一个,什么都没有。。如何尝试调试?为什么在我重新启动游戏之前我的酒吧工作正常?
-(void)sbagliato{
    CCLOG(@"Sbagliato");

    if (menu) [self removeChild:menu cleanup:YES];
    if (labelDomanda) [self removeChild:labelDomanda cleanup:YES];
    if (bar) [self removeChild:bar cleanup:YES];

    labelRisultato = [CCLabelTTF labelWithString:@"Hai sbagliato!" fontName:@"Marker Felt" fontSize:24];
    [labelRisultato setColor:ccc3(255, 1, 1)];
    labelRisultato.position = ccp(size.width / 2, 280);

    [self addChild:labelRisultato];
    [self gameOver:2 punteggio:0];
    // Richiamiamo il metodo per eliminare la label dopo 0,3 secondi
    [self performSelector:@selector(eliminaLabel) withObject:nil afterDelay:0.5];

    increment = increment - 20;
    [pointLabel setString: [NSString stringWithFormat: @"Punti: %i", increment]];

    // new question
    [self performSelector:@selector(creaDomanda) withObject:nil afterDelay:0.5];
}