我想每秒更改窗口的背景颜色,所以这是我的代码:
- (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];
}
答案 1 :(得分: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];
}