mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-15 03:21:35 +08:00
Also, AnimationState listeners are done using blocks. This is for cocos2d 2.1.0. Version 3.0 and 3.1 is coming soon.
163 lines
5.6 KiB
Objective-C
163 lines
5.6 KiB
Objective-C
|
|
#import "cocos2d.h"
|
|
#import "AppDelegate.h"
|
|
#import "SpineboyExample.h"
|
|
|
|
@implementation MyNavigationController
|
|
|
|
// The available orientations should be defined in the Info.plist file.
|
|
// And in iOS 6+ only, you can override it in the Root View controller in the "supportedInterfaceOrientations" method.
|
|
// Only valid for iOS 6+. NOT VALID for iOS 4 / 5.
|
|
-(NSUInteger)supportedInterfaceOrientations {
|
|
// iPhone only
|
|
if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
|
|
return UIInterfaceOrientationMaskLandscape;
|
|
|
|
// iPad only
|
|
return UIInterfaceOrientationMaskLandscape;
|
|
}
|
|
|
|
// Supported orientations. Customize it for your own needs
|
|
// Only valid on iOS 4 / 5. NOT VALID for iOS 6.
|
|
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
|
// iPhone only
|
|
if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
|
|
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
|
|
|
|
// iPad only
|
|
// iPhone only
|
|
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
|
|
}
|
|
|
|
// This is needed for iOS4 and iOS5 in order to ensure
|
|
// that the 1st scene has the correct dimensions
|
|
// This is not needed on iOS6 and could be added to the application:didFinish...
|
|
-(void) directorDidReshapeProjection:(CCDirector*)director {
|
|
if(director.runningScene == nil) {
|
|
// Add the first scene to the stack. The director will draw it immediately into the framebuffer. (Animation is started automatically when the view is displayed.)
|
|
// and add the scene to the stack. The director will run it when it automatically when the view is displayed.
|
|
[director runWithScene: [SpineboyExample scene]];
|
|
}
|
|
}
|
|
@end
|
|
|
|
|
|
@implementation AppController
|
|
|
|
@synthesize window=window_, navController=navController_, director=director_;
|
|
|
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
|
// Create the main window
|
|
window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
|
|
|
// Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits
|
|
CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
|
|
pixelFormat:kEAGLColorFormatRGB565 //kEAGLColorFormatRGBA8
|
|
depthFormat:0 //GL_DEPTH_COMPONENT24_OES
|
|
preserveBackbuffer:NO
|
|
sharegroup:nil
|
|
multiSampling:NO
|
|
numberOfSamples:0];
|
|
|
|
director_ = (CCDirectorIOS*) [CCDirector sharedDirector];
|
|
|
|
director_.wantsFullScreenLayout = YES;
|
|
|
|
// Display FSP and SPF
|
|
[director_ setDisplayStats:YES];
|
|
|
|
// set FPS at 60
|
|
[director_ setAnimationInterval:1.0/60];
|
|
|
|
// attach the openglView to the director
|
|
[director_ setView:glView];
|
|
|
|
// 2D projection
|
|
[director_ setProjection:kCCDirectorProjection2D];
|
|
// [director setProjection:kCCDirectorProjection3D];
|
|
|
|
// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
|
|
if( ! [director_ enableRetinaDisplay:YES] )
|
|
CCLOG(@"Retina Display Not supported");
|
|
|
|
// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
|
|
// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
|
|
// You can change this setting at any time.
|
|
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
|
|
|
|
// If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix.
|
|
// On iPad HD : "-ipadhd", "-ipad", "-hd"
|
|
// On iPad : "-ipad", "-hd"
|
|
// On iPhone HD: "-hd"
|
|
CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
|
|
[sharedFileUtils setEnableFallbackSuffixes:NO]; // Default: NO. No fallback suffixes are going to be used
|
|
[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"]; // Default on iPhone RetinaDisplay is "-hd"
|
|
[sharedFileUtils setiPadSuffix:@"-ipad"]; // Default on iPad is "ipad"
|
|
[sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"]; // Default on iPad RetinaDisplay is "-ipadhd"
|
|
|
|
// Assume that PVR images have premultiplied alpha
|
|
[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
|
|
|
|
// Create a Navigation Controller with the Director
|
|
navController_ = [[MyNavigationController alloc] initWithRootViewController:director_];
|
|
navController_.navigationBarHidden = YES;
|
|
|
|
// for rotation and other messages
|
|
[director_ setDelegate:navController_];
|
|
|
|
// set the Navigation Controller as the root view controller
|
|
[window_ setRootViewController:navController_];
|
|
|
|
// make main window visible
|
|
[window_ makeKeyAndVisible];
|
|
|
|
return YES;
|
|
}
|
|
|
|
// getting a call, pause the game
|
|
-(void) applicationWillResignActive:(UIApplication *)application {
|
|
if( [navController_ visibleViewController] == director_ )
|
|
[director_ pause];
|
|
}
|
|
|
|
// call got rejected
|
|
-(void) applicationDidBecomeActive:(UIApplication *)application {
|
|
[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
|
|
if( [navController_ visibleViewController] == director_ )
|
|
[director_ resume];
|
|
}
|
|
|
|
-(void) applicationDidEnterBackground:(UIApplication*)application {
|
|
if( [navController_ visibleViewController] == director_ )
|
|
[director_ stopAnimation];
|
|
}
|
|
|
|
-(void) applicationWillEnterForeground:(UIApplication*)application {
|
|
if( [navController_ visibleViewController] == director_ )
|
|
[director_ startAnimation];
|
|
}
|
|
|
|
// application will be killed
|
|
- (void)applicationWillTerminate:(UIApplication *)application {
|
|
CC_DIRECTOR_END();
|
|
}
|
|
|
|
// purge memory
|
|
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
|
|
{
|
|
[[CCDirector sharedDirector] purgeCachedData];
|
|
}
|
|
|
|
// next delta time will be zero
|
|
-(void) applicationSignificantTimeChange:(UIApplication *)application {
|
|
[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
|
|
}
|
|
|
|
- (void) dealloc {
|
|
[window_ release];
|
|
[navController_ release];
|
|
|
|
[super dealloc];
|
|
}
|
|
@end
|