Cocos2d-x 截图功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocos2d-x 截图功能相关的知识,希望对你有一定的参考价值。

2.x-3.x版本                 //获取屏幕尺寸  

      CCSize size = CCDirector::sharedDirector()->getWinSize();
      //使用屏幕尺寸初始化一个空的渲染纹理对象  
      CCRenderTexture* texture = CCRenderTexture::create((int)size.width, (int)size.height);
      //设置位置      
      texture->setPosition(ccp(size.width/2, size.height/2));
      //开始获取      
      texture->begin();
      //遍历场景节点对象,填充纹理到texure中  
      CCDirector::sharedDirector()->getRunningScene()->visit();
      //结束获取  
      texture->end();
      //保存为PNG图,Win32/Debug目录下  
      texture->saveToFile("screenshot.png", kCCImageFormatPNG);   
3.x-3.2x版本       Image::Format format;
      //进行后缀判断  
      if(std::string::npos != fileName.find_last_of(".")){
        auto extension = fileName.substr(fileName.find_last_of("."),fileName.length());
        if (!extension.compare(".png")) {
            format = Image::Format::PNG;
        else if(!extension.compare(".jpg")) {
            format = Image::Format::JPG;
        else{
            log("cocos2d: the image can only be saved as JPG or PNG format");
            return;
        }
    else {
        log("cocos2d: the image can only be saved as JPG or PNG format");
        return ;
    }
    //获取屏幕尺寸,初始化一个空的渲染纹理对象  
      auto renderTexture = RenderTexture::create(getWinSize().width, getWinSize().height, Texture2D::PixelFormat::RGBA8888);
      //清空并开始获取  
      renderTexture->beginWithClear(0.0f, 0.0f, 0.0f, 0.0f);
      //遍历场景节点对象,填充纹理到RenderTexture中  
      getRunningScene()->visit();
      //结束获取  
      renderTexture->end();
      //保存文件  
      renderTexture->saveToFile(fileName , format);
      //使用schedule在下一帧中调用callback函数  
      auto fullPath = FileUtils::getInstance()->getWritablePath() + fileName;
      auto scheduleCallback = [&,fullPath,callback](float dt){
          callback(fullPath);
      };
      auto _schedule = getRunningScene()->getScheduler();
      _schedule->schedule(scheduleCallback, this, 0.0f,0,0.0f, false"screenshot");
3.2x以后  void Util::captureScreen(const std::function<void(boolconst std::string&)>& afterCaptured, const std::string& filename);

以上是关于Cocos2d-x 截图功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在android上通过Cocos2d-x获取截图保存路径

cocos2d-x 2.x 学习与应用总结11: 理解CCGLProgram

cocos2d-x CCSrollView 源代码,可循环的SrollView代码

如何在 Android 片段中禁用屏幕截图?

在当前的android片段中禁用屏幕截图[重复]

cocos2d-x 过滤颜色