关于游戏中处理Facebook头像的问题

最近项目中遇到一个问题,接入Facebook SDK后,想要获取Facebook的头像信息后,不知道该怎么把它应用到游戏中,请教解决方案

使用GraphAPI
userId = 朋友的ID
Width 和 Height 是取下来的尺寸
NSURL *url = ];
dispatch_queue_t downloader = dispatch_queue_create(“PicDownloader”, NULL);
dispatch_async(downloader, ^{
NSData *data = ;
UIImage *image = ;

        NSLog(@"Picture %@ Fetched", userId);
        NSString sPic = 保存到Document的位置
       转换成png
         atomically:YES];
        Texture2D = Texture2D::initWithFile();
});

你这个是在应用里应用还在在Cocos2dX的游戏中呢?我现在是想在游戏中获得它,但是应用的地方又是在C++那一层,所以一直找不到很好的办法

facebook sdk 没法在c++层直接调用,要先用objC或者java先取到图像,保存后再在c++端读取出来

这个要区分平台了啊,只要 facebook 成功登陆,就可以根据 URL 来获取头像的图片
安卓和ios 都是可以获取的

OK, 这也是我现在处理的一种方式,但是用Java获得头像文件后如何保存呢?然后C++游戏那一层还能正常的使用,这段逻辑你是怎么实现的呢?

           我是这么搞的, java 水平一般,抄网上的。。。
                Runnable runnable = new Runnable(){
        @Override
        public void run() {
            try {
                URL image_value= new URL("https://graph.facebook.com/" + pUser + "/picture?width=" + pWidth + "&height=" + pHeight );
                Bitmap profPict = BitmapFactory.decodeStream(image_value.openConnection().getInputStream());
        
                String fileName = Activity.getFilesDir() + "/fb" + pUser + ".png";
                File bitmapFile = new File(fileName);
                FileOutputStream bitmapWtriter = new FileOutputStream(bitmapFile);
                profPict.compress(Bitmap.CompressFormat.PNG, 90, bitmapWtriter);
                bitmapWtriter.close();
                
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    };
    new Thread(runnable).start();

我知道你的意思,你这只是下载好了头像图片,我是说下载完成好后,图片存在哪里,然后我cocos2d写的c++的客户端如何取得和利用这张图片,才能够使它成为游戏中任务头像而不是系统随机分配的一个头像

学习了。。。。。。。。

用ios/android的Facebook SDK取得头像的url,再用HTTPClient/CURL之类的网络库下载到本地临时文件,再让sprite加载本地的图片文件。

marky xiaixix

这个我也想到了,就是想问问,你们项目当中就是这么做的吗?还有就是你们是阻塞住UI线程去做下载的吗?

肯定要用多线程下,不过HTTPClient已经封装了多线程,不用自己写。