如何让一个计时器倒计时,另一个随机移动一个对象? [英] How do I have one timer countdown and the other randomly move an object?

查看:82
本文介绍了如何让一个计时器倒计时,另一个随机移动一个对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有正确的代码可以随机移动一个对象,也可以使数字倒计时但是当计时器倒计时我无法移动对象。我发现奇怪的一件事是,当我拿出关于TimeLeft标签的部分时,对象随机移动但显然数字没有倒计时。

I have the right code to move an object randomly and also to make numbers count down but I am not able to have an object move while the timer counts down. One thing I found weird though was that when I took out the part about the TimeLeft label the objects moved randomly but obviously the numbers did not count down.

主要问题是:如何让计时器倒计时并让对象同时移动?

The main question is: how can I have a timer countdown and have the object move at the same time?

(我的主要目标是在计时器达到零时让对象停止移动)

(my main goal is to make the object stop moving once the timer reaches zero)

如果有人可以帮助解决这个问题,我会很感激吗?

I would appreciate it alot if someone could help with this problem?

-(void)Workauto{
secondsCount1 = 10;
autoperiods = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(autoperiod) userInfo:nil repeats:YES];
}

-(void)autoperiod{
secondsCount1 = secondsCount1 -1;
int minuts = secondsCount1/ 60;
int seconds = secondsCount1 - (minuts * 60);

NSString *timerOutput = [NSString stringWithFormat:@"%2d:%.2d", minuts , seconds];
Count.text = timerOutput;
if (secondsCount1 == 0){
    secondsCount1=0;
    [autoperiods invalidate];
    autoperiods=nil;

    Count.hidden=YES;
    AutoTimeLeftLabel.hidden=YES;
    TimeLeft.hidden=NO;
    TimeLeftlabel.hidden=NO;

    Ball.hidden=NO;
    Ball2.hidden=NO;
    BluBall.hidden=NO;
    BluBall2.hidden=NO;

    RedHigh1.hidden=YES;
    RedHigh2.hidden=YES;
    RedHigh3.hidden=YES;
    RedHigh4.hidden=YES;

    RedLow1.hidden=YES;
    RedLow2.hidden=YES;

    BlueHigh1.hidden=YES;
    BlueHigh2.hidden=YES;
    BlueHigh3.hidden=YES;
    BlueHigh4.hidden=YES;

    BlueLow1.hidden=YES;
    BlueLow2.hidden=YES;

    RedMid1.hidden=YES;
    RedMid2.hidden=YES;
    RedMid3.hidden=YES;
    RedMid4.hidden=YES;

    BlueMid1.hidden=YES;
    BlueMid2.hidden=YES;
    BlueMid3.hidden=YES;
    BlueMid4.hidden=YES;

    move = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(move) userInfo:nil repeats:YES];
    pos = CGPointMake(4.0, -4.0);
    move2 = [NSTimer scheduledTimerWithTimeInterval:0.04 target:self selector:@selector(move2) userInfo:nil repeats:YES];
    pos2 = CGPointMake(3.0, 4.0);
    Update = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
    DPad = [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(DPad) userInfo:nil repeats:YES];

    //RedGoals = [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(RedGoals) userInfo:nil repeats:YES];
    //BlueGoals = [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(BlueGoals) userInfo:nil repeats:YES];
    [self SetTimer];
}
}

-(void)SetTimer{
comeonandcount = 150;
GameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(GameTimerCo) userInfo:nil repeats:YES];
}

-(void)GameTimerCo{
comeonandcount = comeonandcount - 1;
int minuts = comeonandcount / 60;
int seconds = comeonandcount - (minuts * 60);

NSString *timerOutputGame = [NSString stringWithFormat:@"%2d:%.2d", minuts , seconds];
TimeLeft.text = timerOutputGame;

if (comeonandcount == 0){
    comeonandcount=0;
    [GameTimer invalidate];
    GameTimer=nil;

    [move invalidate];
    [move2 invalidate];
}
}


推荐答案


我发现奇怪的一件事是,当我拿出关于TimeLeft标签的部分时,对象随机移动但显然数字没有倒计时。

One thing I found weird though was that when I took out the part about the TimeLeft label the objects moved randomly but obviously the numbers did not count down.

干得好!你实际上已经解决了这个问题。那部分不是怪异;这是问题的原因。

Very well done! You've actually solved the problem already. That part is not "weird"; it's the cause of the problem.

您正在使用自动布局。好吧,当您设置标签的文本时,会导致布局发生。因此,整个界面中的约束断言自己并将所有对象放回原位。就这么简单。

You are using autolayout. Well, when you set the text of a label, that causes layout to happen. Thus, the constraints throughout your interface assert themselves and put all your objects back where they were. It's as simple as that.

这篇关于如何让一个计时器倒计时,另一个随机移动一个对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆