cocos 屏幕截屏
#ifndef CaptureTest_hpp
#define CaptureTest_hpp
#include <stdio.h>
#include <iostream>
using namespace std;
#include "cocos2d.h"
USING_NS_CC;
#include "ui/CocosGUI.h"
using namespace cocos2d::ui;
class CaptureTest:public Layer {
public:
static Scene* createScene();
bool init();
CREATE_FUNC(CaptureTest);
};
#endif /* CaptureTest_hpp */
#include "CaptureTest.hpp"
Scene* CaptureTest::createScene()
{
auto scene = Scene::create();
auto layer = CaptureTest::create();
scene->addChild(layer);
return scene;
}
bool CaptureTest::init()
{
if (!Layer::init()) {
return false;
}
auto size = Director::getInstance()->getVisibleSize();
auto bg = Sprite::create("bg1.png");
bg->setPosition(Vec2(size.width/2, size.height/2));
this->addChild(bg);
auto captureBtn = Button::create();
captureBtn->setTitleText("Capture");
captureBtn->setTitleColor(Color3B::YELLOW);
captureBtn->setTitleFontSize(30);
captureBtn->setPosition(Vec2(size.width/2,size.height/2));
this->addChild(captureBtn);
captureBtn->addClickEventListener([=](Ref*sender){
{
utils::captureScreen在v3.2版本,utils::captureScreen()方法被加入用于保存屏幕截图。
bool : 捕捉屏幕截图是否成功 afterCaptured :该方法将在捕捉指令后被执行。
> filename :截图的名字。
// > 可以只是一个文件名。 像这样ScreenShot.png。
// > 也可以是一个绝对路径。像这样/sdcard/ScreenShot.png。
//captureScreen(const std::function<void(bool, const std::string&)>& afterCaptured, const std::string& filename);
utils::captureScreen([=](bool succeed,const std::string& outputFile){
if (succeed)
{
CCLOG("%s", outputFile.c_str());
//显示截图
Sprite* sp = Sprite::create(outputFile);
sp->setPosition(size / 2);
this->addChild(sp);
sp->setScale(0.25); //放缩
}
else
{
CCLOG("Capture screen failed.");
}
}, "/Users/mac/Desktop/gameScree.png");
}
});
return true;
}