ソースコードの基本を理解しよう (3/5)
作成:2015-05-23 09:10
更新:2015-05-23 09:10
更新:2015-05-23 09:10
■HelloWorldScene.hでシーンクラスをチェック!
続いて、もう1つのヘッダーファイル「HelloWorldScene.h」を見てみましょう。こちらが、実際に画面に表示されるシーンの内容になります。
下のリスト欄にソースコードを掲載しておきます(コメントは省略してあります)。こちらもそんなに複雑なものではありません。やはりいくつかのメソッドが用意されているだけです。では簡単に内容をまとめましょう。
◎シーンのクラスは実は「Layer」クラス
クラスの宣言部分を見てみましょう。するとこんな具合に書かれていることがわかります。
(じゃあ、シーンというクラスはないのか?というと、そういうわけではありません。これは、この後に登場します)
◎シーンを作成する
メソッドの最初に用意されているのは、「createScene」というものです。これはstaticメソッドで、以下のように宣言されています。
今までHelloWorldクラスを「シーンのクラス」といってましたが、実際には、このSceneクラスが画面表示のベースとなる「シーン」のクラスになります。このSceneに、LayerクラスであるHelloWorldを組み込んで画面に表示するようになっているのです。
◎初期化とコールバック
その後にあるのは、クラスの初期化処理を行うinitメソッドと、終了メニューを選んだ際のコールバックになります。
◎createメソッド生成マクロ
最後にあるのは、インスタンス生成のためのメソッドに関するマクロです。Cocos2d-xではインスタンス生成にcreateというメソッドを用意しますが、このメソッド生成に関するマクロを用意することで、インスタンス作成時に必ず用意しておかないといけないautorelease処理などを自動で組み込んでくれます。
まぁ、これはクラス利用の際に必ず書いておく「おまじない」みたいなもの、と考えておけばいいでしょう。
下のリスト欄にソースコードを掲載しておきます(コメントは省略してあります)。こちらもそんなに複雑なものではありません。やはりいくつかのメソッドが用意されているだけです。では簡単に内容をまとめましょう。
◎シーンのクラスは実は「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();menuCloseCallbackは、ちょっとわかりにくいかも知れません。これは、自分で終了のメニューなどを用意した時に使えます。まぁ、今は深く考えなくてOKです。
void menuCloseCallback(cocos2d::Ref* pSender);
◎createメソッド生成マクロ
最後にあるのは、インスタンス生成のためのメソッドに関するマクロです。Cocos2d-xではインスタンス生成にcreateというメソッドを用意しますが、このメソッド生成に関するマクロを用意することで、インスタンス作成時に必ず用意しておかないといけないautorelease処理などを自動で組み込んでくれます。
CREATE_FUNC(HelloWorld);
まぁ、これはクラス利用の際に必ず書いておく「おまじない」みたいなもの、と考えておけばいいでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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ゲームプログラミング入門」に戻る