Cocos2d-x3.2スクリーンショット
2182 ワード
//GameScene.h
#include "cocos2d.h"
USING_NS_CC;
class GameScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
void menuCallback(Ref* pSender);
CREATE_FUNC(GameScene);
private: // auto
Size size;
Sprite *sprite;
};
//GameScene.cpp
#include "GameScene.h"
USING_NS_CC;
cocos2d::Scene* GameScene::createScene()
{
auto scene = Scene::create(); //
auto layer = GameScene::create(); //
scene->addChild(layer);
return scene;
}
//
bool GameScene::init()
{
if(!Layer::init()) //
return false;
//
size = Director::getInstance()->getVisibleSize();
//auto size = Director::getInstance()->getWinSize();
//
sprite = Sprite::create("OnePiece_1.png");
sprite->setPosition(Vec2(size.width/2, size.height/2));
this->addChild(sprite);
//
auto item = MenuItemFont::create("click", CC_CALLBACK_1(GameScene::menuCallback, this));
item->setPosition(Vec2(size.width*0.9, size.height/2));
auto menu = Menu::create(item, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu);
return true;
}
void GameScene::menuCallback(Ref* pSender)
{
//
auto texture = RenderTexture::create(size.width, size.height);
texture->begin();
Director::getInstance()->getRunningScene()->visit(); //
texture->end();
if (texture->saveToFile("ScreenShot.png", Image::Format::PNG))
{ //3.0 , PNG JPG
log("Success.");
//
//
std::string filePath = FileUtils::getInstance()->getWritablePath() + "ScreenShot.png";
//
//auto sprite = Sprite::createWithTexture(texture->getSprite()->getTexture());
auto sprite = Sprite::create(filePath.c_str());
sprite->setPosition(Vec2(size.width/2, size.height/2));
//sprite->setFlippedY(true); //
sprite->setScale(0.5f);
this->addChild(sprite);
}
}