cocos2d-x中截屏的方法、保存圖片,以及使用截屏作爲背景實例

以一個遊戲做實例來說明截屏及其使用方法

給菜單按鈕設置回調函數,在回調函數中進行截圖操作



void GameScene:: MenuCall(Ref* ref){

    auto visible = Director::getInstance()->getVisibleSize();
    //定義一個屏幕大小的渲染紋理
    RenderTexture *sqr = RenderTexture ::create(visible.width, visible.height);
    //渲染紋理開始捕捉
    sqr->begin();
//    當前場景參與繪製
    this->getParent()->visit();
//    捕捉結束
    sqr->end();
//    保存爲png圖片
//    sqr->saveToFile("screenshoot.png", kCCImageFormatPNG);
////    保存爲jpg圖片
//    sqr->saveToFile("screenshoot.jpg", kCCImageFormatJPEG);
    Director::getInstance()->pushScene(GamePause::createScene(sqr)); //把渲染紋理的指針傳值下一個場景
    
}

在下一個場景中,用截圖做背景



Scene* GamePause::createScene(RenderTexture *sqr){
    
    auto scene = Scene::create();
    GamePause *layer = GamePause::create();
    scene->addChild(layer,1);
    
    auto back_sqr = Sprite::createWithTexture(sqr->getSprite()->getTexture());//獲取截圖
    back_sqr->setPosition(VISIBLESIZE/2);  //設置位置
    back_sqr->setFlippedY(true);    //設置翻轉
    back_sqr->setColor(Color3B::GRAY);
    scene->addChild(back_sqr);
    
    auto back_menu = Sprite::createWithSpriteFrameName("menu_bg.png");  //這是中間菜單框的圖片
    back_menu->setPosition(VISIBLESIZE/2);
    scene->addChild(back_menu);
    return scene;
};



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章