libro
www.tuyano.com
初心者のためのCocos2d-xゲームプログラミング入門

ソースコードの基本を理解しよう (3/5)

作成:2015-05-23 09:10
更新:2015-05-23 09:10

■HelloWorldScene.hでシーンクラスをチェック!

続いて、もう1つのヘッダーファイル「HelloWorldScene.h」を見てみましょう。こちらが、実際に画面に表示されるシーンの内容になります。

下のリスト欄にソースコードを掲載しておきます(コメントは省略してあります)。こちらもそんなに複雑なものではありません。やはりいくつかのメソッドが用意されているだけです。では簡単に内容をまとめましょう。

◎シーンのクラスは実は「Layer」クラス
クラスの宣言部分を見てみましょう。するとこんな具合に書かれていることがわかります。
class HelloWorld : public cocos2d::Layer
ファイル名はHelloWorldSceneですが、実際に定義されているクラスは「HelloWorld」になります。そしてこのクラスは、cocos2d名前空間の「Layer」というクラスを継承していることがわかります。シーンというのは、実際にはLayerというクラスのことだったんですね。

(じゃあ、シーンというクラスはないのか?というと、そういうわけではありません。これは、この後に登場します)

◎シーンを作成する
メソッドの最初に用意されているのは、「createScene」というものです。これはstaticメソッドで、以下のように宣言されています。
static cocos2d::Scene* createScene();
ここでは、cocos2d名前空間の「Scene」というクラスのインスタンスが返値に設定されていますね。このSceneというのが、プログラム的には本当(?)のシーンのクラスになります。

今までHelloWorldクラスを「シーンのクラス」といってましたが、実際には、このSceneクラスが画面表示のベースとなる「シーン」のクラスになります。このSceneに、LayerクラスであるHelloWorldを組み込んで画面に表示するようになっているのです。

◎初期化とコールバック
その後にあるのは、クラスの初期化処理を行うinitメソッドと、終了メニューを選んだ際のコールバックになります。
virtual bool init();
void menuCloseCallback(cocos2d::Ref* pSender);
menuCloseCallbackは、ちょっとわかりにくいかも知れません。これは、自分で終了のメニューなどを用意した時に使えます。まぁ、今は深く考えなくてOKです。

◎createメソッド生成マクロ
最後にあるのは、インスタンス生成のためのメソッドに関するマクロです。Cocos2d-xではインスタンス生成にcreateというメソッドを用意しますが、このメソッド生成に関するマクロを用意することで、インスタンス作成時に必ず用意しておかないといけないautorelease処理などを自動で組み込んでくれます。
CREATE_FUNC(HelloWorld);

まぁ、これはクラス利用の際に必ず書いておく「おまじない」みたいなもの、と考えておけばいいでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

class HelloWorld : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();
    virtual bool init();
    void menuCloseCallback(cocos2d::Ref* pSender);
    CREATE_FUNC(HelloWorld);
};

#endif // __HELLOWORLD_SCENE_H__
※関連コンテンツ

「初心者のためのCocos2d-xゲームプログラミング入門」に戻る