2013-02-15 61 views
0

我创建了一个测验游戏,它实现了一个时间条。在第一场比赛中,这是没问题的,但是如果在比赛结束后,玩家点击“重新开始”,游戏会正常进行,但时间栏会消失!重启游戏后cocos2d消失的进度时间吧

这里从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]; 
} 

在这里,一个(类似),其毕竟,创建一个新的问题:

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

任何人都可以向我解释请为什么当我重新启动时间栏d esappers? 谢谢

+0

题外话复位:它的娱乐性阅读意大利代码:) – LearnCocos2D 2013-02-15 14:27:20

+0

也是它让我饿了! :D – LearnCocos2D 2013-02-15 14:33:52

+0

谢谢!我尝试翻译一些变量,使代码更清晰:)但谢谢你:) – TheInterestedOne 2013-02-15 14:52:13

回答

1

我最好的猜测:

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

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

如果不解决这个问题,那么我想象CCProgressTimer需要通过设定比例恢复到100。

+0

我会尽力而且会写出结果。但为什么每次在生成栏中的新问题都会被正确重新初始化,并且在新的重新启动后,这不会发生? – TheInterestedOne 2013-02-15 14:53:29

+0

对不起,但它并没有解决它。这可能是因为每次生成新问题时,该方法都会删除前一个栏并重新创建一个新栏,重新设置分栏!我不明白为什么(newquestion)的所有其他部分都能正常工作,但这部分不一样! – TheInterestedOne 2013-02-15 15:58:01

+0

没有什么可以解决这个问题。我已经解决了与酒吧(僵尸对象)有关的其他问题,但对于这个没有任何内容。我该如何尝试调试?为什么我的酒吧正常工作,直到我重新开始游戏? – TheInterestedOne 2013-02-17 18:08:45