麒麟子Cocos Creator实用技巧四:打包原生App截图白屏解决方案

大家在做棋牌App或者一些特定需求的时候,需要截取当前游戏屏幕内容保存。

我们一般是采用cc.RenderTexture来截图并保存到游戏的可写目录

有时候会遇上,截出来的图片是白屏,或者部分白屏。

经过多方测试,我们发现,是Mask的锅,用了cc.Mask的界面,截图的时候,就会遇上这样的问题。

如果遇上这样的问题,只需要检查你的cc.RenderTexture初始化的时候,是否少了参数。最主要的是第三个参数,一定要是RGBA8888

var texture = new cc.RenderTexture(w, h, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);

完整示例如下:

function captureScreen(){
    var size = cc.director.getWinSize();
    var fileName = "result_share.jpg";
    var fullPath = jsb.fileUtils.getWritablePath() + fileName;
    if (jsb.fileUtils.isFileExist(fullPath)) {
        jsb.fileUtils.removeFile(fullPath);
    }
    var width = Math.floor(size.width);
    var height = Math.floor(size.height);
    var texture = new cc.RenderTexture();
    texture.initWithSize(width, height, cc.gfx.RB_FMT_D24S8);
    texture.setPosition(cc.p(size.width / 2, size.height / 2));
    texture.begin();
    cc.director.getRunningScene().visit();
    texture.end();
    texture.saveToFile(fileName, cc.IMAGE_FORMAT_JPG);
}    

 

发布了232 篇原创文章 · 获赞 542 · 访问量 118万+
展开阅读全文

QT作图问题,第一次运行正常,第二次崩溃

08-28

代码如下,画图是单独线程进行的,现在问题是第一次启动线程的时候是没有问题的,第二次程序就崩溃了 ``` void QTCurvePlotThread(LPVOID pParam) { int argc = 1; char *argv[] = { "Qt" }; static QApplication app(argc, argv); app.setQuitOnLastWindowClosed(true); QChart *charts[4] = { new QChart(), new QChart(), new QChart(), new QChart() }; for(int k = 0; k < 8; k++) { //.. 向窗口中添加曲线 QChart *chart = charts[k/2]; QLineSeries *series = new QLineSeries(); int offset = chart->series().count(); for(int i = 0; i < 360; i++) { qreal x = offset * 20 + i; series->append(QPointF(i, qSin(2.0 * 3.141592 * x / 360.0))); } series->setName(QString("line " + QString::number(chart->series().size()))); chart->addSeries(series); //.. 设置属性 chart->setTitle("Zoom in/out example"); chart->createDefaultAxes(); chart->legend()->show(); chart->legend()->setAlignment(Qt::AlignBottom); chart->setAnimationOptions(QChart::SeriesAnimations); } QSplitter *splitterMain = new QSplitter(Qt::Vertical, NULL/*app->widgetAt(0,0)*/); splitterMain->resize(720, 480); splitterMain->setOpaqueResize(true); splitterMain->setStretchFactor(1, 1); QChartView *view1 = new QChartView(charts[0], splitterMain); QChartView *view2 = new QChartView(charts[1], splitterMain); QChartView *view3 = new QChartView(charts[2], splitterMain); QChartView *view4 = new QChartView(charts[3], splitterMain); QGridLayout *m_mainLayout = new QGridLayout(); m_mainLayout->addWidget(splitterMain, 0, 0, 1, 1); QWidget *window = new QWidget; window->setWindowTitle("CurvePloter"); window->setLayout(m_mainLayout); window->show(); app.exec(); return; } ``` 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie

分享到微信朋友圈

×

扫一扫,手机浏览