アプリで利用している「cocos2d」をver1.0 から2.0にバージョンアップした。

cocos2dのver2.0が出ているのは知っていたのですが、私がアプリを作り始めた時にはまだ正式版ではなかったのでver1.xで開発をしていたのですが、 今月に入りメモリーの問題で、cocos2d2.0に急遽変更することにしました。 プログラミングの初心者ということで、移行作業にも非常に苦労をしました。今回はそのバージョンアップ過程をブログにまとめていこうと思います。

アプリをcocos2d 2.0に変更する

まずは、cocos2dのバージョンを2.0に変更します。

まずは2.0をダウンロードします。 Download | cocos2d for iPhone

ファイルの入れ替え

次に、先ほどダウンロードしたを入れ替えます。

ターミナルを開いて、下記を順番に打ち込んでいきます。 [c] //yougameprogectはあなたのアプリの場所を指定してください。 $ cd ~/yougameproject/libs/ $ rm -rf cocos2d/ $ rm -rf cocoslive/ $ rm -rf CocosDenshion/ $ rm -rf TouchJSON/ $ rm -rf FontLabel/ $ rm -f LICENSE*.txt

//「cocos2d-iphone-2.0」にはダウンロードしたcocos2d2.0の場所を指定してください。 //私は、cocos2d kazmath CocosDenshionの3つを入れました。 //あなたのアプリに合わせて、導入するファイルを選んでください。 $ cp -R ~/src/cocos2d-iphone-2.0/cocos2d . $ cp -R ~/src/cocos2d-iphone-2.0/external/kazmath . $ cp -R ~/src/cocos2d-iphone-2.0/CocosDenshion/CocosDenshion .

[/c]

これでプロジェクトファイルの中身は入れ替わりました。

xcodeにファイルを移す

これではまだ完全にファイルの入れ替えができていません。 xcodeを開いてlibsフォルダの中身を修正します。

1、cocos2dlive,CocosDenshion,TouchJSON,FontLabelなどをDel(デリート)で削除します。 2013 2 16 5544

2、プロジェクト内のファイルをxcodeのlibs内に移動させます。 2 16 2013

これであなたのアプリはcocos2d ver2.0になりました。

cocos2d 2.0にした際の修正

cocos2dのファイルを変えた後に、色々と修正をしなくては行けないことがあります。これは、あなたの利用しているコードによって違うので一概には言えませんが、一度ビルドをしてみるとエラーや警告がでてきます。 これを一つ一つ修正しましょう。

kazmath

cocos2d 2.0からkazmathと呼ばれるライブラリーが追加されています。 これを参照しているクラスも結構あります。まずはこれを参照できるようにしてあげましょう。

[Build Setting]内の、[Search Paths]=>[Header Search Paths]にkazmathのフォルダの場所を指定します。 2013 2 16 544df 2 このように入力すればいいでしょう。 [c] "${SRCROOT}/【プロジェクト名】/libs/external/kazmath/include" [/c]

AppDelegateの修正

次はAppDelegateの修正です。 これは、一概に何を変更したらいいのかは言えませんが、私はアプリの方向の修正。EAGLViewが利用できないのでこれの修正などをしました。

アプリの方向は以下のようにコードを付け加える [c] -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { //横向き return UIInterfaceOrientationIsLandscape(interfaceOrientation); } [/c]

EAGLViewの代わりに、CCGLViewクラスを利用する。

このAppDelegateに関しては、cocos2d2.0の「テンプレート」を利用して、その中身を参考にするといいかもしれません。

使えない各種クラスのメソッドの変更

APIの変更で、各種クラスのメソッドで利用できないものがあります。 これは、新しく変更していきます。

例1,CCMenuItemImage [c] itemFromNormalImage =>itemWithNormalImage [/c]

例2,touchDispatcher(タッチに関する変更) [c] //これはもう利用できない。 [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

//こちらに変更 [[CCDirector sharedDirector] touchDispatcher]; [/c]

例3、CCAnimate [c] //これが利用できない actionWithAnimation: restoreOriginalFrame:

//こっちに変更 actionWithAnimation: [/c]

例4、SneakyInput 私は、「SneakyInput」というクラスを使っているのですが、これもcocos2d 2.0のために変更しなくてはいけません。 幸いにも、2.0バージョンがありますので、これをダウンロードをして入れ替えます。

参考にしたサイト

cocos2d 2.0にする際に参考にしたサイトです。こちらも合わせて見てください。 prog_guide:migrate_to_v2.0 – cocos2d for iPhone

cocos2d 1.0.1から2.0に移行する « mooapp

xionchannel@software: cocos2d 2.0への移行

さいごに

cocos2dに入れ替えて一週間ぐらいしますが、ようやく前と同じ状態にもっていけたと感じています。 やる前から、大変な作業になると思っていましたが、その通りになりました。 とにかく細かいエラーが出てくるのと、挙動が1.0の時と違うのか、意図しない動きをしたり、大変です。 また、謎多きcocos2d 2.0ですので、しっかり調べて使っていきたいです。