Re: Basic Core Animation question
Re: Basic Core Animation question
- Subject: Re: Basic Core Animation question
- From: "Greg Sabo" <email@hidden>
- Date: Tue, 15 Apr 2008 17:49:48 -0500
I retained the layer object, and now the program no longer crashes! I'll be
sure to read up more on retaining objects, as that is clearly an important
concept.
Now just to get the circle to display. I'm not quite sure what you mean by
"set the layer to a view to be displayed," which means that I'm probably not
doing that. How would I go about doing this?
Here is the class as it is now:
//*********************************************
#import "GameBoard.h"
@implementation GameBoard
- (id) initWithFrame:(NSRect) frame {
if (self = [super initWithFrame: frame]) {
animateLayer = [CALayer layer];
[animateLayer setDelegate:self];
[animateLayer retain];
}
return self;
}
- (void) awakeFromNib {
[[self window] setAcceptsMouseMovedEvents: YES];
}
- (BOOL) acceptsFirstResponder {
return NO;
}
//draws the view
- (void)drawRect:(NSRect)rect {
[self drawBoardBackgroundInRect:rect];
[animateLayer setNeedsDisplay];
}
- (void)drawBoardBackgroundInRect:(NSRect)rect {
[NSBezierPath fillRect:rect];
}
- (void)drawLayer:(CALayer *)theLayer
inContext:(CGContextRef)theContext {
CGRect theRect = CGRectMake(0.5, 0.5, 1, 1);
CGContextSetRGBFillColor(theContext, 1, 0, 1, 1);
CGContextFillEllipseInRect(theContext, theRect );
}
On Mon, Apr 14, 2008 at 9:23 PM, Michael Vannorsdel <email@hidden>
wrote:
> In your initWithFrame: method you need to retain the layer object or the
> autorelease pool may deallocate it. Also, where do you set the layer to a
> view to be displayed?
>
>
> On Apr 14, 2008, at 6:26 PM, Greg Sabo wrote:
>
> I think I'm doing those things, see below:
> >
> > //Setting object as delegate for CALayer
> > - (id) initWithFrame:(NSRect) frame {
> > if (self = [super initWithFrame: frame]) {
> > animateLayer = [CALayer layer];
> > [animateLayer setDelegate:self];
> > }
> > return self;
> > }
> >
> > //drawing the view and setting setNeedsDisplay of CALayer to YES
> > - (void)drawRect:(NSRect)rect {
> > [self drawBoardBackgroundInRect:rect];
> > //whenever this next line is not commented out, the program crashes
> > //when I try to resize the window
> > [animateLayer setNeedsDisplay];
> > }
> >
> > //Implementation of drawLayer: inContext:
> > - (void)drawLayer:(CALayer *)theLayer
> > inContext:(CGContextRef)theContext {
> >
> > CGRect theRect = CGRectMake(0.5, 0.5, 1, 1);
> > CGContextSetRGBFillColor(theContext, 1, 0, 1, 1);
> > CGContextFillEllipseInRect(theContext, theRect );
> > }
> >
> > Thanks for your help, you guys are awesome!
> >
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden