~~NOTOC~~ ====== GamePlayViewController ====== ---- dataentry extension ---- type : extension # or 'mod' if it requires changing the Sparrow source author_mail : matt62king@gmail.com Matt King description : A view controller for SPView. lastupdate_dt : YYYY-MM-DD # the date you created the extension compatible : v1.1 # the Sparrow version you tested the extension with depends : # if the ext. depends on others, list them here tags : SPView, SPStage homepage_url : # if the ext. has an URL (e.g. a Gist-page), add it here download_url : # a direct link to the download (e.g. the Gist-archive) ---- ===== Usage ===== The GamePlayViewConroller is a view controller for SPView. It is a subclass of UIViewController so it can be used on a navigation stack or as a model view controller. GamePlayViewController responds to the application moving to/from the background, and listens for a "StopGame" NSNotification. It also has SPStage property. Set this property with your stage before presenting the view controller. ===== Changelog ===== * //2011/05/06 23:22//: First public version ===== Source Code ===== GamePlayViewController.h #import #import "Sparrow.h" @interface GamePlayViewController : UIViewController { SPView *_sparrowView; } @property (nonatomic, retain) SPStage *stage; - (void)stopGameNotification; - (void)onTransitionToActive:(NSNotification *)sender; - (void)onTransitionToInactive:(NSNotification *)sender; @end GamePlayViewController.m #import "GamePlayViewController.h" @implementation GamePlayViewController @synthesize stage; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { _sparrowView = [[SPView alloc] initWithFrame:CGRectMake(0.0, 0.0, 480.0, 320.0)]; } return self; } - (void)loadView { [self setView:_sparrowView]; [_sparrowView release]; } #pragma mark - #pragma mark View Life Cycle - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTransitionToInactive:) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopGameNotification) name:@"StopGame" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTransitionToActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; self.stage = nil; } - (void)viewDidUnload { [super viewDidUnload]; } #pragma mark - #pragma mark Rotation - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); } #pragma mark - #pragma mark Accessor Methods - (void)setStage:(SPStage *)aStage { if (aStage) { SPView *spView = (SPView *)[self view]; spView.stage = aStage; spView.frameRate = 30.0; [spView start]; [SPAudioEngine start:SPAudioSessionCategory_AmbientSound]; } } #pragma mark - #pragma mark Notifications - (void)stopGameNotification { SPView *spView = (SPView *)[self view]; [spView stop]; [SPAudioEngine stop]; [self.parentViewController dismissModalViewControllerAnimated:YES]; } - (void)onTransitionToActive:(NSNotification *)sender { SPView *spView = (SPView *)[self view]; [spView start]; [SPAudioEngine start]; } - (void)onTransitionToInactive:(NSNotification *)sender { SPView *spView = (SPView *)[self view]; [spView stop]; [SPAudioEngine stop]; } #pragma mark - #pragma mark Memory Managment - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc. that aren't in use. } - (void)dealloc { [self.stage release]; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"StopGame" object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil]; [super dealloc]; } @end ===== Discussion ===== //No comments so far. Feel free to edit this part of the page.//