cocoscreator网页游戏远程资源加载

背景

引擎版本cocoscreator v 2.4.2,语言javascript。

情况1

用户头像为非微信头像,即公司服务器头像加载,需首先设置存放用户头像的静态资源服务器运行跨域;如果配置了域名,则设置域名运行跨域,前端代码代码实现如下:

/**
     * 渲染头像
     * @param {cc.Sprite} spAvatar  头像节点
     * @param {String} url          头像地址
     * @returns 头像地址为空时 返回
     */
    renderAvatar(spAvatar, url){
    	//空地址判断
        if(url == '')return;
	    //非微信头像
	    cc.assetManager.loadRemote(url, function (err, texture) {
	        //资源加载成功
	        if(err === null){
	        	//将texture对象转为SpriteFrame资源对象
	            let spriteFrame = new cc.SpriteFrame(texture);
	            //渲染对象
	            spAvatar.spriteFrame = spriteFrame;
	            //因引擎自身原因这里需进行延迟显示(跳过当前帧)
	            spAvatar.node.opacity = 0;
	            setTimeout(()=>{
	                spAvatar.node.width = 120;
	                spAvatar.node.height = 120;
	                spAvatar.node.opacity = 255;
	            }, 1);
	        }else{
	            log.debug('远程资源加载失败:', err);
	        }
	    });
	}

情况2

用户头像为微信头像,即用户注册为新用户后,默认使用微信头像。前端代码代码实现如下:

    /**
     * 渲染头像
     * @param {cc.Sprite} spAvatar  头像节点
     * @param {String} url          头像地址
     * @returns 头像地址为空时 返回
     */
    renderAvatar(spAvatar, url){
		//空地址判断
        if(url == '')return;
        //创建Image对象
        let img = new Image();
	    img.crossOrigin = 'Anonymous';
	    img.src = url;
	    //将传统网页Image对象转为cocos纹理对象
	    let texture2D = new cc.Texture2D();
	    texture2D.initWithElement(img);
	    //将纹理转为SpriteFrame类型的资源
	    let spriteFrame = new cc.SpriteFrame(texture2D);
	    //渲染图片资源
        spAvatar.spriteFrame = spriteFrame;
	}

汇总

以上两种方式,可以统一在游戏工具类中封装成一个方法,并设置远程资源缓存对象池,根据用户唯一标识性ID进行map中的key-value映射。这样,每个用户头像只需远程加载一次成功后,即可缓存至本地。
至此,结束。

在Cocos Creator 3D中制作微信小程序,并加载远程资源,你需要遵循以下几个步骤: 1. **设置项目配置**:首先,确保你的Cocos Creator项目支持Web技术栈,因为微信游戏基于HTML5运行。 2. **引入网络模块**:在你的脚本中,需要导入`cc.Class`和`cc.AssetManager`,这两个库分别用于创建类和管理资产加载。 ```javascript import { cc.Class, cc.AssetManager } from 'cocos creator'; ``` 3. **创建Asset URL**:将远程资源的URL存储在一个变量中,这可以是一个HTTP、HTTPS地址或者其他支持的协议。 ```javascript const remoteUrl = 'https://yourserver.com/remote_resource.json'; // 替换为你实际的资源URL ``` 4. **加载资源**:使用`AssetManager`的`load`方法加载远程资源,通常会使用异步函数处理加载过程。 ```javascript cc.AssetManager.load(remoteUrl, 'json', () => { // 资源加载成功,这里的回调函数会在资源加载完成后执行 const resource = arguments[0]; // 现在你可以使用resource进行操作了 }, (err) => { // 加载失败,这里处理错误 console.error('Failed to load remote resource:', err); }); ``` 5. **错误处理**:确保在加载过程中提供适当的错误处理机制,以便于调试和用户体验优化。 6. **等待资源准备**:如果资源需要在游戏开始前预加载,可以使用`AssetManager`的`preload`方法。然而,微信小程序有其特定的游戏生命周期,可能需要在合适的时机触发加载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值