2014-04-03 78 views
0

我试图创建一个开始级别标签(例如3.2.1.GO),但是当我根据Gamestate计划选择器运行并且如果gamestate比X大,选择器不会; t返回到init选择器,并且游戏保持停止状态。选择器不返回到初始值

这是我的代码是在init方法定义:

if (startLevelAnimState <=4) { 
     [self schedule: @selector(startLevelAnimation) interval:.5]; 
     NSLog(@"%d", startLevelAnimState); 
    } else { 
     [self unschedule:@selector(startLevelAnimation)]; 
    } 

,这是startLevelAnimation

-(void)startLevelAnimation { 
    NSLog(@"running startlevelanimation"); 


    if (startLevelAnimState == 0) { 
     NSLog(@"create start level label"); 
     startLevelLabel = [CCLabelTTF labelWithString:@"3" fontName:@"Verdana-Bold" fontSize:62]; 
     startLevelLabel.position = ccp(winWidth/2, winHeight*2); 

     [self addChild:startLevelLabel z: 10]; 


     CCAction *actionMove = [CCActionMoveTo actionWithDuration:.8 position:CGPointMake(winWidth/2, winHeight*(.65))]; 
     //CCAction *actionRemove = [CCActionRemove action]; 
     [startLevelLabel runAction:[CCActionSequence actionWithArray:@[actionMove]]]; 
     startLevelAnimState ++; 

    } else if (startLevelAnimState ==1) { 
     [startLevelLabel setString: [NSString stringWithFormat:@"2"]]; 
     startLevelAnimState ++; 

    } else if (startLevelAnimState ==2) { 
     [startLevelLabel setString: [NSString stringWithFormat:@"1"]]; 
     startLevelAnimState ++; 

    } else if (startLevelAnimState ==3) { 
     [startLevelLabel setString: [NSString stringWithFormat:@"GO!"]]; 
     startLevelAnimState ++; 

    } else if (startLevelAnimState ==4) { 
     CCAction *actionMove = [CCActionMoveTo actionWithDuration:.8 position:CGPointMake(winWidth/2, winHeight*2)]; 
     [startLevelLabel runAction:[CCActionSequence actionWithArray:@[actionMove]]]; 
     startLevelAnimState ++; 
     gameState = 1; 
     [self unschedule:@selector(startLevelAnimation)]; 

    } 

} 
+0

init在创建图层时只调用一次。你必须创建另一个调度程序来处理游戏中的更新。 – uchamp

+0

你有另一个调度程序吗? – uchamp

回答

1

您需要设置状态为0,而不是增加。这不明显吗?

} else if (startLevelAnimState ==4) { 
    CCAction *actionMove = [CCActionMoveTo actionWithDuration:.8 position:CGPointMake(winWidth/2, winHeight*2)]; 
    [startLevelLabel runAction:[CCActionSequence actionWithArray:@[actionMove]]]; 
    startLevelAnimState = 0; 
    gameState = 1; 
    [self unschedule:@selector(startLevelAnimation)]; 

} 
+1

为什么要重新启动startlevelAnimState?这将再次开始动画 –