2014-04-03 77 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?這將再次開始動畫 –