1. Initialize the two rectangles required for the starting and ending
positions for the image in line 4.
2. Add the image to the NSImageView that will be moved back and
forth between these locations in line 5.
3. Add this NSImageView to the BaseView so that we can see the action
in line 6.
- (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) { [self initializeFramePositions]; [self addImageToSubview]; [self addSubview:mover]; } return self; }
You will also need to override the following two methods to handle keyboard
events:
- (BOOL)acceptsFirstResponder { return YES; } - (void)keyDown:(NSEvent *)event { [self move]; }
Returning YES from the acceptsFirstResponder method allows this view to
be the first Responder in the responder chain, and thus it will get the
first chance to respond to the key press events.
Setting the Beginning and Ending Positions
-(void)initializeFramePositions { CGFloat frameX = NSWidth([self frame]); CGFloat frameY = NSHeight([self frame]); leftFramePosition = NSMakeRect(0.0f, 0.0f, frameX /4.0f,frameY / 4.0f); rightFramePosition = NSMakeRect(7.0f * frameX / 8.0f, 7.0f *frameY / 16.0f,frameX / 8.0f, frameY/ 8.0f); mover = [[NSImageView alloc] initWithFrame:leftFramePosition]; isRight = NO; } -(void)addImageToSubview { [mover setImageScaling:NSScaleToFit]; [mover setImage:[NSImage imageNamed:@"photo.jpg" ]]; }
positions for the image
Moving the Image
- (void)move { if(isRight) { [mover setFrame:leftFramePosition]; } else { [mover setFrame:rightFramePosition]; } isRight = !isRight; }
animation.