zoukankan      html  css  js  c++  java
  • 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 utils::captureScreen(const std::function<void(boolconst std::string&)>& afterCaptured, const std::string& filename);
  • 相关阅读:
    原生js可爱糖果数字时间特效
    jQuery绑定事件的四种方式
    jQuery选择器总结
    正则表达式
    this对象
    网页瀑布流效果实现的几种方式
    关于DOM
    SparkSQL读写外部数据源--数据分区
    SparkSQL读写外部数据源-通过jdbc读写mysql数据库
    SparkSQL读写外部数据源-基本操作load和save
  • 原文地址:https://www.cnblogs.com/liugangBlog/p/6285498.html
Copyright © 2011-2022 走看看