JS 实现:
____ js 调用 Android、IOS
// 分平台 调用 访问相册
onVisitPhoto : function (sender, type) {
if (type !== ccui.Widget.TOUCH_ENDED) {
return;
}
this.panelGetTexture.setVisible(false);
if (cc.sys.os === cc.sys.OS_ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/imagePacker/ImagePicker", "openPhoto",
"(III)V", this.playerIconWidth, this.playerIconHeight, this.androidTextureQuality);
} else if (cc.sys.os === cc.sys.OS_IOS) {
jsb.reflection.callStaticMethod("ImagePickerViewController", "openPhoto:height:quality:",
this.playerIconWidth, this.playerIconHeight, this.iosTextureQuality);
}
},
// 分平台 调用 使用相机
onUseCamera : function (sender, type) {
if (type !== ccui.Widget.TOUCH_ENDED) {
return;
}
this.panelGetTexture.setVisible(false);
if (cc.sys.os === cc.sys.OS_ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/imagePacker/ImagePicker", "openCamera",
"(III)V", this.playerIconWidth, this.playerIconHeight, this.androidTextureQuality);
} else if (cc.sys.os === cc.sys.OS_IOS) {
jsb.reflection.callStaticMethod("ImagePickerViewController", "openCamera:height:quality:",
this.playerIconWidth, this.playerIconHeight, this.iosTextureQuality);
}
},
____js 留给 Android、IOS 调用
var playerIconLayerObtainTextureBase64String = function (param) {
var event;
// 抛出获取到图片的事件
event = new cc.EventCustom("PlayerIconLayer_ObtainTextureBase64String");
event.setUserData(JSON.stringify(param));
cc.eventManager.dispatchEvent(event);
};
____ js 调用 生成图片
// 获得与生成自定义头像: id 玩家 ID 、 newIcon 自己设置或服务器发来新头像
idGetBase64StringToImage : function(id, newIcon) {
var base64String;
var fileName = jsb.fileUtils.getWritablePath() + id + ".jpg";
// ------------------- 不是新自定义头像且文件存在,返回 filename -------------------
if (newIcon !== true && jsb.fileUtils.isFileExist(fileName)) {
return fileName;
}
// ------------------------- 以下为新自定义头像 --------------------------
// 没 base64 string
base64String = this.getPlayerIconFromPlayerIconPlist(id);
if (base64String == null) {
return null;
}
// 生成图片
if (cc.sys.os === cc.sys.OS_ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/imagePacker/ImagePicker", "base64ToFile",
"(Ljava/lang/String;Ljava/lang/String;)V", base64String, fileName);
} else if (cc.sys.os === cc.sys.OS_IOS) {
jsb.reflection.callStaticMethod("ImagePickerViewController", "base64StringToFile:fileName:",
base64String, fileName);
} else {
jsb.fileUtils.saveBinaryFile(base64String, fileName); // 有了这个无需前两个
}
// 有生成,就须重加载,加载不成则 返回 null
if (cc.TextureCache.getInstance().reloadTexture(fileName) !== true) {
return null;
}
return fileName;
}
分平台实现:
------------------------------------------
Android
------------------------------------------