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
コメントをお書きください