2012-10-01 126 views
1

我想改变我的窗口背景色每秒钟所以这里是我的代码:改变窗口背景色

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(newColor) userInfo:nil repeats:YES]; 
} 

-(void)newColor { 
    int r; 
    r = (arc4random()%250)+1; 
    NSLog(@"%i", r); 

    int g; 
    g = (arc4random()%250)+1; 
    NSLog(@"%i", g); 

    int b; 
    b = (arc4random()%250)+1; 
    NSLog(@"%i", b); 

    NSColor *theColor = [NSColor colorWithDeviceRed:(int)r green:(int)g blue:(int)b alpha:(float)1.0]; 
    [_window setBackgroundColor:theColor]; 
} 

我想我的问题是与变量定义的颜色,但我不当然。

+0

所以,要么下面的答案帮助你的? –

回答

0

我建议您做如下修改..

#define ARC4RANDOM_MAX  0x100000000 

-(void)newColor:(NSTimer *)sender { 
//Give your void an NSTimer argument so you have to ability to invalidate the timer if you ever want to. 
    float r = ((float)arc4random()/ARC4RANDOM_MAX); 
    float g = ((float)arc4random()/ARC4RANDOM_MAX); 
    float b = ((float)arc4random()/ARC4RANDOM_MAX); 

//These will generate random floats between zero and one. NSColor wants floats between zero and one, not ints between 0-255. 


    NSLog(@"R: %f | G: %f | B: %f",r,g,b); 


    if (r >= 0.5 && g >= 0.5 && b >= 0.5) { 
     [sender invalidate]; 
    } 
//Example of invalidating sender 


    NSColor *theColor = [NSColor colorWithDeviceRed:r green:g blue:b alpha:1.0f]; 
    [_window setBackgroundColor:theColor]; 
} 
0

只是改变你的newColor方法如下

-(void)newColor 
{ 
    int r; 
    r = (arc4random()%250)+1; 
    NSLog(@"%i", r); 

    int g; 
    g = (arc4random()%250)+1; 
    NSLog(@"%i", g); 

    int b; 
    b = (arc4random()%250)+1; 
    NSLog(@"%i", b); 

    float red = (float)r/255; 
    float blue = (float)b/255; 
    float green = (float)g/255; 

    NSLog(@"red-%f, blue-%f, green-%f",red, blue, green); 
    NSColor *theColor = [NSColor colorWithDeviceRed green:green blue:blue alpha:1.0]; 
    [_window setBackgroundColor:theColor]; 
}