最近项目中遇到一个问题,接入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已经封装了多线程,不用自己写。