最近cocos2d-iphoneを触り始めました。
開発するiOSアプリケーションへライブラリを組み込みたい時にいろいろな手間をはぶけるCocoaPods、使っていますか?
ひとつひとつファイルをダウンロードしてきてプロジェクトに追加なんて面倒くさくてやっていられないですよね。
cocos2dをインストールするとXcodeにプロジェクトテンプレートが追加されます。
普通はプロジェクト作成時にこのテンプレートを選択することになると思いますが、cocos2dのファイル群が自分の書いたソースファイルと同列にあるのが気持ち悪い。
cocos2dもCocoaPodsで管理するようにしましょう。
cocos2dはCocoaPodsに登録されているので、他のライブラリと同じようにPodfileへ以下のように書けばプロジェクトに追加することができます。
pod 'cocos2d'
やってみましょう。
まず、プロジェクトを作成するときには、Empty Application
を選択します。
必要な情報を入力してプロジェクトを作成しましょう。
プロジェクトを作成したら、プロジェクトのディレクトリにPodfile
を作成します。
Podfile には上にも書いた、pod 'cocos2d'
を記述します。
もちろん、他のライブラリを追加してもOKです。
編集を終えたら、pod install
を実行します。
この記事ではcocoapodsの使い方は説明しません。
cocoapodsもインストールされているものとして話を進めます。
生成された hogehoge.xcworkspace を開くと、Podsプロジェクトにcocos2dのファイル郡が追加されています。
cocos2dのテンプレートをつかってプロジェクトを作成したときと違って、AppDelegateにはcocos2d関連の処理が書かれていません。
当然ですね。
なので、cocos2dのテンプレートを使った時に生成されるファイルを参考に、以下のようにAppDelegateのファイルを編集します。
# import <UIKit/UIKit.h>
# import <cocos2d.h>
@interface CCAppDelegate : UIResponder <UIApplicationDelegate, CCDirectorDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
# import "CCAppDelegate.h"
@interface CCAppDelegate ()
@property (weak, nonatomic) CCDirectorIOS *director;
@property (strong, nonatomic) UINavigationController *rootViewController;
@end
@implementation CCAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CCGLView *glView = [CCGLView viewWithFrame:self.window.bounds
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
self.director = (CCDirectorIOS *)[CCDirector sharedDirector];
self.director.wantsFullScreenLayout = YES;
self.director.displayStats = NO;
self.director.animationInterval = 1.0/60;
self.director.view = glView;
self.director.delegate = self;
self.director.projection = kCCDirectorProjection2D;
[self.director enableRetinaDisplay:YES];
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
CCFileUtils *fileUtils = [CCFileUtils sharedFileUtils];
[fileUtils setEnableFallbackSuffixes:NO];
[fileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];
[fileUtils setiPadSuffix:@"-ipad"];
[fileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"];
[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
[self.director pushScene:[IntroLayer scene]];
self.rootViewController = [[UINavigationController alloc] initWithRootViewController:self.director];
self.rootViewController.navigationBarHidden = YES;
self.window.rootViewController = self.rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
if (self.rootViewController.visibleViewController == self.director) {
[self.director pause];
}
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if (self.rootViewController.visibleViewController == self.director) {
[self.director stopAnimation];
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
if (self.rootViewController.visibleViewController == self.director) {
[self.director startAnimation];
}
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if (self.rootViewController.visibleViewController == self.director) {
[self.director resume];
}
}
- (void)applicationWillTerminate:(UIApplication *)application
{
CC_DIRECTOR_END();
}
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[self.director purgeCachedData];
}
- (void)applicationSignificantTimeChange:(UIApplication *)application
{
self.director.nextDeltaTimeZero = YES;
}
@end
IntroLayerをpushSceneしているところは好きなLayerクラスに置き換えてください。
これでCocoaPodsで追加したcocos2dが使えるはずです。