按钮不随机移动

时间:2014-07-25 04:27:31

标签: objective-c uibutton arc4random

我想要一个按钮随机出现并让用户点击它。但是,如果他们没有在适当的时间内按下它,它就会消失,我希望它移动到不同的位置。但是,每当我不点击它时,它就会回到屏幕上的相同位置。这是我的代码。

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

1 个答案:

答案 0 :(得分:0)

drand48()是一个种子随机生成器,所以它只是伪随机的。在程序开始时,可​​以调用srand48(int),然后在需要随机数时,使用drand48()。在srand48(int)中使用的整数是随机数的“种子”;也就是说,每次使用该种子时,“随机”数字的顺序都是相同的。

你说不是那么随意吗?如果你想要更多的东西,试试arc4random()。为了使生活更轻松,您可以使用(arc4random()%x)获取0 - (x-1)范围内的随机数。

希望这有帮助!