2014-11-23 53 views
0

我有正确的代码随机移动一个对象,也使数字倒计时,但我不能有一个对象移动,而计时器倒计时。我发现有一件事很奇怪,但是当我拿出关于TimeLeft标签的部分时,对象随机移动,但显然这些数字没有倒数。如何让一个计时器倒计时,另一个随机移动一个物体?

主要问题是:如何让计时器倒计时并使物体同时移动?

(我的主要目标是使物体停止移动一旦定时器达到零)

我将不胜感激很多,如果有人可以帮助解决这个问题?

-(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]; 
} 
} 

回答

0

一两件事,我发现怪异,虽然是,当我拿出部分有关的timeleft标记物随机移动,但显然这些数字并没有倒计时。

很好!你已经解决了这个问题。那部分不是“怪异”的;这是问题的原因。

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

+0

当我离开有关TimeLeft标签的代码时,它会正确倒计时,但对象不会随机移动,而是刚刚开始移动,但在一秒钟后返回原点。 – 2014-11-23 04:37:07

+0

这就是我刚才所说的。事实上,你的评论是一个美丽而精确的描述。 – matt 2014-11-23 04:37:31

+0

对不起,我不明白你的意思我是一个新的objective-c,并没有真正得到自动布局的整个概念 – 2014-11-23 04:38:14

相关问题