抖音小游戏加载用户头像
1210 浏览2023年05月09日作者:User7229614995640713249

这个域名不断变化,手动添加容易漏掉。我看了下社区回复的用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;

}

最后一次编辑于 2023 年 05 月 09 日
1 条评论

相关问答

专题推荐

热门文章

热门问答