cocos2dx Android游戏截屏分享

 原创作品,转载请注明:http://blog.csdn.net/ymook/article/details/19996061

在游戏开发中,游戏截屏,并一键分享的功能是必不可少的,这样,更多的玩家就会聚集过来。

这篇文章是我接着上一篇文章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游戏开发中,截屏并在各大平台的分享功能实现过程已完成,谢谢大家的关注!

cocos2dx Android游戏截屏分享,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。