【发布时间】:2015-06-24 00:18:38
【问题描述】:
故事板设置在 2 个 VC 上。 initial VC 有一个按钮,segues 指向发生battleScene 的位置。 battleScene 有一个将segues 返回到initial VC 的按钮,一个显示健康状况的标签,以及一个启动计时器的按钮。
我有 2 个问题一直在努力解决,但尚未解决。
1:当我播放NSTimer 时,切换 VC 并返回到计时器影响标签的 VC,标签停止更新。
2:当敌人 2 的生命值为 0 并且我告诉计时器停止使用我的 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];
}
}
}
我从计时器指南中获得了 stopTimer 方法,我一直在寻找如何解决计时器在 segue 问题上停止的问题,但无法解决。
干杯
【问题讨论】:
标签: ios objective-c uiviewcontroller timer segue