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

私の問題は、変数で色を定義することにあると思いますが、よくわかりません。

4

2 に答える 2

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];
}
于 2012-10-01T16:57:18.640 に答える
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];
}
于 2012-10-01T17:08:29.903 に答える