cocos2d-x シーンの作成メモ

デバッグ表示の削除

AppDelegate.cpp

director->setDisplayStats(false);

リソースの参照方法

AppDelegate.cpp

FileUtils::getInstance()->addSearchPath("images");

これでResourceディレクトリ以下のimageディレクトリも探索してくれるようになる

新しいファイルを追加したとき

Classesディレクトリに新しいファイルを追加したらAndroid.mkに追加する

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp \
                   ../../Classes/MainScene.cpp \
                   ../../Classes/TitleScene.cpp

シーンの作成

TitleScene.h

#ifndef __Test__TitleScene__
#define __Test__TitleScene__

#include "cocos2d.h"

class TitleScene :public cocos2d::LayerColor
{
protected:
    TitleScene();
    virtual ~TitleScene();
    bool init() override;

public:
    static cocos2d::Scene* createScene();
    void onEnterTransitionDidFinish() override;
    CREATE_FUNC(TitleScene);
};

#endif // __Test__TitleScene__

TitleScene.cpp

#include "TitleScene.h"
#include "MainScene.h"
#include "SimpleAudioEngine.h"

USING_NS_CC;

Scene* TitleScene::createScene()
{
     // シーンの作成と貼り付け
    auto scene = Scene::create();
    auto layer = TitleScene::create();
    scene->addChild(layer);
    return scene;
}

TitleScene::TitleScene()
{

}

TitleScene::~TitleScene()
{

}

bool TitleScene::init()
{

     // 画面の背景に色をつける
    if(!LayerColor::initWithColor(Color4B(100, 100, 100, 255)))
    {
        return false;
    }

    // 画面サイズの取得
    auto director = Director::getInstance();
    auto winSize = director->getWinSize();

     // 画像ファイルの貼り付け
    auto background = Sprite::create("title_background.png");
    background->setPosition(Vec2(winSize.width / 2.0, winSize.height / 2.0));
    this->addChild(background);

     // 上の画像ファイルの上から貼り付け
    auto logo = Sprite::create("title_logo.png");
    logo->setPosition(Vec2(winSize.width / 2.0, winSize.height-150));
    this->addChild(logo);

     // 上の画像ファイルの上から貼り付け
    auto touchToStart = Sprite::create("title_start.png");
    touchToStart->setPosition(Vec2(winSize.width / 2.0, 90));

    auto blink = Sequence::create(FadeTo::create(0.5, 127), FadeTo::create(0.5, 255), NULL);
    touchToStart->runAction(RepeatForever::create(blink));
    this->addChild(touchToStart);

    // タッチイベントの登録
    auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [this](Touch* touch, Event* event){

        CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("decide.mp3");

        this->getEventDispatcher()->removeAllEventListeners();

        auto delay = DelayTime::create(0.5);

        // 画面遷移コード
        auto startGame = CallFunc::create([]{
            auto scene = MainScene::createScene();
            auto transition = TransitionPageTurn::create(0.5, scene, true);
            Director::getInstance()->replaceScene(transition);
            });

        // 少し待ってから画面遷移
        this->runAction(Sequence::create(delay, startGame, NULL));
        return true;
    };

    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
    return true;
}

// 音を鳴らす
void TitleScene::onEnterTransitionDidFinish()
{
    CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("bgm/title.mp3", true);
}