This is Sequence.m in view mode; [Download] [Up]
#import "Sequence.h" @implementation Sequence:Object //----------------------------------------------------------- // SET UP //----------------------------------------------------------- - setFrameCount:(int)frames; { frameCount=frames; return self; } - setLocation:(const NXPoint *)aPoint; { where=*aPoint; return self; } - setImage:(NXImage *)anImage; { image=anImage; [image getSize:&imageSize]; frameSize=imageSize; frameSize.height/=frameCount; return self; } - setBounce:(BOOL)flag; { bounce=flag; return self; } //----------------------------------------------------------- // PLAY //----------------------------------------------------------- - start:controlView; { currentFrame=-1; direction=FORWARD; return [self nextFrame:controlView]; } - nextFrame:controlView; { currentFrame+=direction; if(direction==FORWARD) { if(currentFrame>=frameCount) if(bounce) { direction=BACKWARDS; currentFrame--; } else { direction=STOPPED; currentFrame=0; } } else { if(currentFrame==0) direction=STOPPED; } [controlView lockFocus]; [self compositeFrame:currentFrame]; [controlView unlockFocus]; [[controlView window] flushWindow]; if(direction!=STOPPED) [self perform:@selector(nextFrame:) with:controlView afterDelay:100 cancelPrevious:NO]; return self; } //----------------------------------------------------------- // DRAW! //----------------------------------------------------------- - compositeFrame:(int)no; { NXRect what={0,0,frameSize.width,frameSize.height}; what.origin.y=imageSize.height-((no+1)*frameSize.height); [image composite:NX_SOVER fromRect:&what toPoint:&where]; return self; } //----------------------------------------------------------- // THAT'S IT //----------------------------------------------------------- @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.