这个域名不断变化,手动添加容易漏掉。我看了下社区回复的用tt.createImage,这个官方文档我也看了,我用的是cocos引擎,没看明白官方提供的代码怎么去实现,希望有大佬能解答下,这下面的怎么用?https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/drawing/picture/tt-create-image/
export const headImgExt = ".head";
/** * 新版本的cocos加载头像的时候,需要先下载,但是在字节小游戏平台下,会有跨域的问题。这个方法需要在进入游戏后加载前调用
* 加载头像的用法:cc.assetManager.loadRemote(url,{ext:headImgExt},(err,texture)=>{});
* 所有不想下载直接使用的图像都可以加上{ext:headImgExt}来使用 */
export function registerHeadImgLoader() {
cc.assetManager.downloader.register(headImgExt, (content, options, onComplete) => {
onComplete(null, content);
});
cc.assetManager.parser.register(headImgExt, downloadDomImage);
function createTexture(id, data, options, onComplete) {
let out = null,
err = null;
try {
out = new cc.Texture2D();
out._uuid = id;
out._nativeUrl = id;
out._nativeAsset = data;
} catch (e) {
err = e;
}
onComplete && onComplete(err, out);
}(cc.assetManager as any).factory.register(headImgExt, createTexture);
}
function downloadDomImage (url , options, onComplete ) {
const img = new Image();
if (window.location.protocol !== 'file:') {
img.crossOrigin = 'anonymous';
}
function loadCallback () {
img.removeEventListener('load', loadCallback);
img.removeEventListener('error', errorCallback);
if (onComplete) {
onComplete(null, img);
}
}
function errorCallback () {
img.removeEventListener('load', loadCallback);
img.removeEventListener('error', errorCallback);
if (onComplete) {
onComplete(new Error(url));
}
}
img.addEventListener('load', loadCallback);
img.addEventListener('error', errorCallback);
img.src = url;
return img;
}
