2015年

3月

03日

Cocos2d-x Ver 3.x Spawn 複数のアクションを同時に実行(リピート)

Sequence、RepeatForeverを使用し複数のアクションを順番に、リピートして実行します。

Cocos2dx 3.x C++言語
SpawnScene.hを次のように変更してみてください。

#ifndef __Spawn__SpawnScene__

#define __Spawn__SpawnScene__


#include "cocos2d.h"


// 名前空間 #define USING_NS_CC using namespace cocos2d

USING_NS_CC;


class SpawnScene : public cocos2d::Layer

{

protected:

    SpawnScene();

    virtual ~SpawnScene();

    //初期化のメソッド

    bool init() override;

    

public:

    static cocos2d::Scene* createScene();

    

    // create()を使えるようにしている。

    CREATE_FUNC(SpawnScene);

    

};


#endif /* defined(__Spawn__SpawnScene__) */


SpawnScene.cppを次のように変更してみてください。

#include "SpawnScene.h"

// 名前空間 #define USING_NS_CC using namespace cocos2d

USING_NS_CC;


using namespace std; // String*


SpawnScene::SpawnScene()

{

    

}


SpawnScene::~SpawnScene()

{

    

}


Scene* SpawnScene::createScene()

{

    // 「シーン」は自動解放オブジェクトです

    auto scene = Scene::create();

    

    // 「レイアウト」は自動解放オブジェクトです

    auto layer = SpawnScene::create();

    

    // シーンに子としてレイヤーを追加

    scene->addChild(layer);

    

    // シーンを返す

    return scene;

}


// INIT」初期化

bool SpawnScene::init()

{

    if ( !Layer::init() )

    {

        

        return false;

    }

    

    //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

    

    Size winSize = Director::getInstance()->getVisibleSize();

    

    // バックグランドカラー(ブルー)

    auto background = LayerColor::create(Color4B::BLUE,

                                         winSize.width,

                                         winSize.height);

    this->addChild(background);

    

    //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

    

    //スプライトの作成

    auto Sprite = Sprite::create("Icon-152.png");

    Size size = Sprite->getContentSize();

    Sprite->setPosition(Vec2(size.width/2, size.height/2));

    this->addChild(Sprite);

    

    //ジャンプのアクション

    auto jumpAction = JumpBy::create(1, Vec2(200, 0), 400, 1);

    

    //回転のアクション

    auto rotateAction = RotateBy::create(1, 360);

    

    //アクションを作成

    auto spawn = Spawn::create(jumpAction, rotateAction, NULL);

    

    //リピート

    auto repeatForever = RepeatForever::create(spawn);

    

    //開始!

    Sprite->runAction(repeatForever);

    

    return true;

}


GitHub Spawn

アクセスカウンター 活性酸素 アクセスカウンター