1. 程式人生 > >cocos2dx Android遊戲截圖分享

cocos2dx Android遊戲截圖分享

在遊戲開發中,遊戲截圖,並一鍵分享的功能是必不可少的,這樣,更多的玩家就會聚集過來。

這篇文章是我接著上一篇文章cocos2dx 植入友盟分享功能 來寫的。不過很多東西也是可以獨立使用的,現在給大家分享一下。 首先,我描述一下這個截圖並分享的整體流程: 1.點選截圖按鈕呼叫截圖函式getScreenPic(); 在win32平臺下,其截圖圖片儲存的路徑是Debug.win32資料夾下。 在Android平臺下,其儲存路徑是data資料夾下(該路徑是私有路徑)。 2.將該圖片從data私有路徑下拷貝出來放到我們自己指定的SD卡路徑; 3.將圖片從SD卡路徑中提取出來上傳到網路伺服器,以便於公眾瀏覽。
詳細說明: 1.getScreenPic()寫法如下(Native層): void FruitGameLayer::getScreenPic() {  CCSize size = CCDirector::sharedDirector()->getWinSize();  //定義一個螢幕大小的渲染紋理  CCRenderTexture* pScreen = CCRenderTexture::create(size.width,size.height, kCCTexture2DPixelFormat_RGBA8888);  //獲得當前的場景指標  CCScene* pCurScene = CCDirector::sharedDirector()->getRunningScene();  //渲染紋理開始捕捉  pScreen->begin();  //當前場景參與繪製  pCurScene->visit();  //結束捕捉  pScreen->end();  //儲存為png  pScreen->saveToFile("gameScreen.png", kCCImageFormatJPEG);  CC_SAFE_DELETE(pScreen); } 2.
拷貝圖片程式碼如下(Java層):    //拷貝截圖     public static String CopyGameScreenPic(String picName) throws IOException     {   boolean sdExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);   if(sdExist)   {    //設定圖片拷貝後的儲存路徑    String pathString=Environment.getExternalStorageDirectory()+"/mnt/sdcard/" ;       File f1=new File(pathString);    if(!f1.exists())    {     f1.mkdirs();    }    String path = pathString+picName;    File share = getContext().getFilesDir().listFiles()[0];    InputStream is = new FileInputStream(share);    FileOutputStream os = new FileOutputStream(path);    byte[] buffer = new byte[1024];    int count = 0;    while ((count = is.read(buffer)) > 0) {     os.write(buffer, 0, count);    }    is.close();    os.close();    return path;   }  return "/mnt/sdcard/";     } 3.
好了,我們就可以用各種第三方介面從SD中提取出圖片並分享了這些介面的實現方式可以通過使用新浪微博、微信、騰訊微博、QQ空間等平臺的開發API。而我使用的友盟社會化元件是集成了上述所有平臺SDK的一個SDK,非常方便,具體實現方法,參照上篇 cocos2dx 植入友盟分享功能 。至此cocos2dx遊戲開發中,截圖並在各大平臺的分享功能實現過程已完成,謝謝大家的關注!