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)];
}
}
init在创建图层时只调用一次。你必须创建另一个调度程序来处理游戏中的更新。 – uchamp
你有另一个调度程序吗? – uchamp