Google+ もご覧ください
ユーザーアイコン

cocos2d javascript bindingsでマルチプラットフォーム開発

第六回 JavaScript/cocos2dのオブジェクトの違いを学ぶ

Seasons

第六回 JavaScript/cocos2dのオブジェクトの違いを学ぶ

cocos2d javascript bindingsでマルチプラットフォーム開発

前回はcocos2d jsbの独特のお作法である、this._super()について解説しました。たった1つのこのメソッドを忘れるだけで難解なエラーが出てしまうということもあり、jsbの内部の仕組みについても少し触れました。

今回は、通常のJavaScriptのオブジェクトとcocos2dのオブジェクトの違いについて解説します。

ネイティブオブジェクト

前回解説した通り、cocos2d jsbで利用するcocos2dのクラスやメソッドは、何もしなければ利用しているSpiderMonkeyのJavaScriptエンジンで処理することが出来ません。

そのため、存在しないクラスやメソッドをJavaScriptエンジンに登録することで、プログラム中でそのコードを発見した場合に登録されたクラスやメソッドが適切に処理されます。仮に存在しないクラスやメソッドを利用しようとするとJavaScriptエンジン側でエラーとなり、プログラムが停止してしまいます。これは、通常のJavaScriptでも同じなので理解しやすいと思います。

また、前回も出てきた通りcocos2dのクラスは通常のJavaScriptのオブジェクトと異なり、ネイティブコードのオブジェクトが関連付けされているのが特徴でした。

CCLayer関連図
CCLayer関連図

これにより、JavaScriptでコードを記述しても実際にはネイティブなcocos2d-xのコードが実行されるため、いつも通りのcocos2d-xのアプリケーションを制作することが可能になっているわけです。

そのため、jsbではこれらのオブジェクトをネイティブオブジェクトと呼んでいます。

cocos2dオブジェクトの生成

cocos2dのクラスをJavaScriptで利用するには、jsb側でルールが用意されています。

cc.クラス名

ccというのがJavaScriptエンジン側にグローバルオブジェクトとしてアプリケーション起動時に登録されており、そのプロパティに各クラスが登録されています。そのため、ccの後に".(ドット)"を記述し、クラス名を記述する必要があるわけです。

cocos2dではCCSpriteなどのようにCCというプレフィックスがつきますが、jsbではccの後ろにドットを挟むと覚えると理解しやすいでしょう。

ccの後に続けて記述できるクラス名はcocos2dのクラス名であればほぼ全て対応しています。例えば、CCSpriteクラスを生成する場合は次のようになります。

cc.Sprite.create("ファイル名")

気を付けるポイントとしてクラス名の最初の文字は大文字である必要があります。ccが小文字であるからといって、うっかり小文字にしないようにしましょう。

Spriteの後に".(ドット)"+呼び出したいメソッド名を記述します。この場合はcreateを呼び出しており、Spriteクラスの生成関数であるcreateが内部で呼び出されます。

cocos2d jsbのリファレンス?

cocos2d jsbでコーディングをしていく際にクラス名やメソッド名は、どのように調べると良いか気になると思います。

最新のcocos2d-x 2.2では、cocos2d-html5とAPI名などがほぼ互換性がとれたものの、肝心のcocos2d-html5のAPIリストがWebページのみだったりするため、調べるにもネットワークが必要で少し不便です。

おすすめは、Macであれば、Dashというアプリケーションを導入してみてください。詳しい解説は割愛しますがcocos2d関連のドキュメントにも対応しており、オフラインでサクサク調べることができます。残念ながら、cocos2d-html5には対応してませんが、安心してください。cocos2d jsbのAPIは、cocos2d-xのAPIともほぼ互換性があるため、cocos2d-xのAPI名で検索すれば問題ありません。

例えば、Sprite系であれば次のように表示されます。

Dashでの表示
Dashでの表示

注意点としてcreate系の生成メソッドなど一部のAPIは、記載されていない or API名が異なる(知っておくべきものは今後の連載で解説します)ので、念のためcocos2d-html5版のAPIリファレンスもチェックできるようにしておくと良いでしょう。

次回予告

次回は、jsbのプログラムから一瞬離れて、縦横の画面方向の対応方法やiPhone 5などの4inchディスプレイの対応について解説していきます。

Cocos2d jsb
タグ:

記事をリクエストする

関連記事

コメント