故事板设置在2个VC上。 10
900
只有initial VC
到segues
发生位置的按钮。 battleScene
有一个battleScene
返回segues
的按钮,一个显示健康状况的标签,以及一个启动计时器的按钮。
我有两个问题,我一直试图解决这个问题,并且没有想到。
1:当我播放initial VC
然后切换VC并返回VC,其中定时器正在影响标签,标签停止更新。
2:当敌人2的生命值为0并且我告诉计时器停止使用我的NSTimer
方法时,计时器继续。
stopTimer
我从计时器指南中获得了int enemy001Hp = 100;
int enemy002Hp = 200;
bool enemy001Active = NO;
bool enemy002Active = NO;
- (void) enemy1 {
enemy001Active = YES;
self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy001Hp];
}
- (void) enemy2 {
enemy002Active = YES;
self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp];
}
- (void) enemyDamageTimer {
if (enemy001Active == YES) {
enemy001Hp -= 50;
self.enemyHpLabel.text = [NSString stringWithFormat:@"%i",enemy001Hp];
if (enemy001Hp <= 0) {
[self enemy2];
self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp];
enemy001Active = NO;
enemy002Active = YES;
}
} else if (enemy002Active == YES) {
enemy002Hp -=50;
self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp];
}
}
- (void) stopTimer {
[timer invalidate];
timer = nil;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self enemy1];
if (enemy002Active == YES) {
self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp];
}
}
- (IBAction)idleAttack:(id)sender {
self.idleOutler.hidden = YES;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(enemyDamageTimer) userInfo:nil repeats:YES];
if (enemy001Active == YES) {
if (enemy001Hp <= 0) {
[self enemy2];
enemy001Active = NO;
enemy002Active = YES;
}
} else if (enemy002Active == YES) {
if (enemy002Hp <= 0) {
self.enemyHpLabel.text = [NSString stringWithFormat:@"0"];
enemy002Hp = 0;
enemy002Active = NO;
[self stopTimer];
}
}
}
方法,并且我一直在寻找如何解决在segue问题上停止的计时器而无法解决问题。
干杯
答案 0 :(得分:0)
对于问题1,您的代码中没有关于计时器的错误,因此问题可能仍然存在于VC转换代码中
对于问题2,计时器将重复触发您从未调用enemyDamageTimer
的方法stopTimer
。这就是计时器继续的原因