2014-07-25 173 views
0

我想要一個按鈕隨機出現並讓用戶點擊它。但是,如果他們沒有在合適的時間內按下它,它會消失,我希望它移動到不同的位置。但是,每當我不點擊它時,它就會回到屏幕上的相同位置。這是我的代碼。按鈕不隨機移動

-(IBAction)randomRed:(id)sender 
{ 

    [self redDot]; 

    CGRect senderFrame = [sender frame]; 
    CGRect superBounds = [[sender superview ] bounds]; 
    senderFrame.origin.x = (superBounds.size.width - senderFrame.size.width) * drand48(); 
    senderFrame.origin.y = (superBounds.size.height - senderFrame.size.height) * drand48(); 
    [sender setFrame:senderFrame]; 

    counter = counter-1; 

    [self performSelector:@selector(showRedDot) withObject:nil afterDelay:1.0]; 
} 

-(void)startRedDot 
{ 

    if (counter ==0) 
     redDot = [NSTimer scheduledTimerWithTimeInterval:4.0 
                target:self 
               selector:@selector(showRedDot) 
               userInfo:nil 
               repeats:YES]; 

} 

-(void)showRedDot 
{ 
    { 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:1.0]; 
     [redButton setAlpha:1]; 
     [UIView commitAnimations]; 

     [self performSelector:@selector(redDot) withObject:nil afterDelay:1.0]; 
    } 
} 
-(void)redDot 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    [redButton setAlpha:0]; 
    [UIView commitAnimations]; 
} 

回答

0

drand48()是一個種子隨機生成器,所以它只是僞隨機的。在你的程序開始時,你可以調用srand48(int),然後當你需要一個隨機數時,使用drand48()。你在srand48(int)中使用的整數是你的隨機數的「種子」;也就是說,每次使用該種子時,「隨機」數字的順序都是相同的。

不是很隨意,你說?如果你想要更多的東西,試試arc4random()。爲了使生活更輕鬆,您可以使用(arc4random()%x)獲得0 - (x-1)範圍內的隨機數。

希望這會有所幫助!