cocos2d-x の本家のサイトにある Cocos2d-JS のチュートリアルを参考にして、Cococs2d-xのチュートリアルを紹介します。
元記事はこちらです。
Parkour Game with JavaScript (Cocos2d-JS v3.0) Chapter2
ここでは、元の英文を日本語に翻訳した上で、JavaScriptのソースをC++に書き換えています。また、一部機能は単純化するために、省略したり、別の方法に書き換えたりしてあります。
Cocos2d-xプロジェクトの新規作成
ここでは、マイドキュメントにccprojectsというフォルダを作成して、そこにプロジェクトを格納していきます。
C:UsersxxxDocuments> mkdir ccprojects C:UsersxxxDocuments> cd ccprojects C:UsersxxxDocumentsccprojects> cocos new Parkour -l cpp |
- 出来上がったプロジェクトのフォルダ構成は次のようになっています。
-
この中でよく使うフォルダは次のフォルダです。
- Classes ・・・自分で作るC++プログラムを格納する
- Resources・・・プログラムで使うリソース(画像や音楽など)を格納する
- proj.win32・・・Windows用のプロジェクトファイルが格納されている
- cocos2d\cocos・・・Cocos2d-xのライブラリのソースファイルが格納されている
プロジェクトの起動
サンプルプログラムの概要
- Classesフォルダ
- AppDelegate.cpp/.h・・・起動するシーンを決めるメインプログラム
- HelloWorldScene.cpp/.h・・・起動されるシーン
- Resourcesフォルダ (Visual Studio上からは直接見えないので、Explorerで見る)
- CloseNormal.png/CloseSelected.png・・・プログラムを終了するボタン(通常状態と押した状態)
- HelloWorld.png・・・表示する画像
- fonts\Marker Felt.ttf・・・表示に使うTTFフォント
AppDelegateクラス
コメントは翻訳し、さらに追加してあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include "AppDelegate.h" #include "HelloWorldScene.h" USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { } // ローンチが完了したら呼び出される。 bool AppDelegate::applicationDidFinishLaunching() { // Directorを初期化する。 auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); } // FPS表示をONにする。 director->setDisplayStats(true); // FPSを設定する。デフォルトは 1.0/60 director->setAnimationInterval(1.0 / 60); // シーンを作成する。これは、autoreleaseオブジェクト auto scene = HelloWorld::createScene(); // シーンを実行する、。 director->runWithScene(scene); return true; } // この関数はアプリケーションがアクティブでなくなった場合に呼び出される。電話が着信した場合も起動される。 void AppDelegate::applicationDidEnterBackground() { Director::getInstance()->stopAnimation(); // もしSimpleAudioEngineを使うなら、ポーズしなければならない。 // SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); } // この関数はアプリケーションが再びアクティブになった場合に呼び出される。 void AppDelegate::applicationWillEnterForeground() { Director::getInstance()->startAnimation(); // もしSimpleAudioEngineを使うなら、ここで再開しなければならない。 // SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); } |
- launch(ローンチ)は、本来は進水とか発射とかという意味で、ここではアプリケーションの実行準備が完了した状態です。
- autoreleaseオブジェクトとは、参照がなくなると自動的にメモリから解放されるオブジェクトのことです。
- 自分が作成したシーンを最初に実行する場合は、HelloWorldSceneの部分を書き換えます。