「OS/ハードウェア層 > アプリ層 > ゲーム層」というような感じで3層あるイメージ
マシン ↓ OS/ハードウェア層 { // アプリの生存管理(起動、終了)OS,機種依存 アプリ層() { //アプリのアクティブ・非アクティブの管理(生存が前提) //ゲームの管理(OS、機種依存) ゲーム層() { //アクティブ時の処理 //ここが共通部分 } } }
起動後、アプリから「ディレクター」というゲームを管理する役割のクラスに
処理を移し、ディレクターがmainLoopの中でwhileの無限ループを進行させている。
また、その前に1度だけゲームの初期化を行うための「applicationDidFinishLaunching()」関数でゲームの初期化を行っている
simulator\frameworks\runtime-src\proj.win32
int APIENTRY _tWinMain(HINSTANCE hInstance, { int SimulatorWin::run() { int Application::run() { applicationDidFinishLaunching(); //起動後1度だけ来る初期化 while( Windowがクローズしていなければ回る ) { director->mainLoop(); ※1 } } } }
D:\dev\cocosPrj\sample3\cocos2d\cocos\platform\android
AppDelegate::applicationDidFinishLaunching() { //1度だけ通る初期化 auto scene = HelloWorld::createScene(); // sceneをdirectorに登録 director->runWithScene(scene); }
描画するためのrender()は呼び出されているがゲーム本体を更新するための
いわゆるaction()が見つからなかった。追いかけて行くとスケジューラーの
updateで、時間に応じて複数の関数が呼び出されるべく関数ポインタが
設定されていた。なので、既定のactionはないのでディレクターを通じて
必要なActionを適宜設定する作法なのだと思われる
つまりディレクターはスケジューラーというメモを持っていますので、
そのメモに自分のゲームを登録してもらって、毎フレーム呼び出してもらうことに
するわけです。
DisplayLinkDirector::mainLoop() { drawScene(); }
void Director::drawScene() { //時間に応じてゲームを呼び出す _scheduler->update(_deltaTime); //描画する _renderer->render(); //描画した絵をメイン画面にフリップする _openGLView->swapBuffers(); }
this->scheduleUpdate();
void HelloWorld::update(float delta) { 毎フレーム更新することをかく }
void HelloWorld::update(float delta) { count ++; m_pSpr->setPosition( count/60 , 128 ); }
JPEGとPNGだけですって...
HelloWorldScene.cppをみるにプロジェクトのルートに「Classes」フォルダがあってそこにおかれている。
ちなみにTemplateフォルダにもHelloWorld.cppとか入っているが、これはCocos newをしてプロジェクトフォルダを
作成する時のコピー元なのでくれぐれも注意。
ネームスペースに含まれていない。cppファイルで記載されているマクロのおかげで
cocos2dライブラリの型を使用できるがヘッダーには含まれていない。以下のように
定義されている。
#define USING_NS_CC using namespace cocos2d
ヘッダーにもマクロを追加してみるのでどうか
コマンドプロンプトでエラーを確認して、該当のファイルを開くのは正直めんどう。
だからこそ、そんな時は!せっかくのCocosなんで好きなOSで好きなIDEでデバッグしたらいいんじゃないかな。
vs_langpack.exe というファイルがダウンロードできるので、実行するだけです。もし、 Visual Studio が立ち上がっていたら閉じておいた方がいいかもしれません。 完了したら、Visual Studio 2015 を起動します。このときは、まだ英語版のままです。 メニューバーの Tool / Options で Options ダイアログを開き、International Settings を変更します。これは Visual Studio 2013 Community と同じですね。 結局、違うのは Language Pack のダウンロード先だけということです。 Visual Studio 2013 Community の日本語化については、たくさん記事があるので適当なものをググってみてください。例えば、下のような記事とやり方は同じです。