博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于egret5.x外部库的配置以及导入最新protobuf导入及使用的一些说明
阅读量:5021 次
发布时间:2019-06-12

本文共 2562 字,大约阅读时间需要 8 分钟。

egret5.x修改了第三方库的导入方式,新建项目的index.html再也看不到任何库的预留位置。取而代之,从manifest.json去读取并加载库和游戏文件。因此,这里的配置已经不能像之前项目非标准的配置方式了,所有的库都要在egret项目下egretProperties.json文件中去配置。


protobuf的API发生了翻天覆地的改变,因此需要重新熟悉,不过好在有熟悉起来也不难。现在也不需要再去为再egret中使用自己去写.d.ts声明了,在库下index.d.ts已经写好了。我们只需要拷贝到项目中使用即可。

在egret中,我在libs下创建一个protobuf文件夹,然后将index.d.ts拷贝到里面,并改名为protobuf.d.ts,再将protobuf库下dist目录中将protobuf.js和protobuf.min.js文件拷贝到这里。然后在项目下egretProperties.json配置protobuf库,如下

{  "native": {    "path_ignore": []  },  "publish": {    "web": 0,    "native": 1,    "path": "bin-release"  },  "egret_version": "5.0.7",  "template": {},  "modules": [    {      "name": "egret"    },    {      "name": "game"    },    {      "name": "tween"    },    {      "name": "res"    },    {      "name": "promise",      "path": "./promise"    },    {      "name": "protobuf",      "path": "./libs/protobuf"    }  ]

然后在resource/assets下创建一个proto文件夹,专门存放proto,在这里我创建了一个login.proto

syntax = "proto2";package login;message Login {    required string account = 1;    required string password = 2;}message createRole {    required string name = 1;    required int sex = 2;}

然后在default.res.json中配置,这里我就配成预加载了,当然每个项目的处理不一样,这就仁者见仁智者见智了

{    "groups":[    {        "keys":"bg_jpg,egret_icon_png,description_json,login_proto",        "name":"preload"    }],    "resources":[    {        "name":"bg_jpg",        "type":"image",        "url":"assets/bg.jpg"    },    {        "name":"egret_icon_png",        "type":"image",        "url":"assets/egret_icon.png"    },    {        "name":"login_proto",        "type":"text",        "url":"assets/proto/login.proto"    },    {        "name":"description_json",        "type":"json",        "url":"config/description.json"    }]}

然后开始在Main.ts中编写代码,在createGameScen中编写了如下测试代码

let ProtoBufRoot = new protobuf.Root();let loginStr:string = RES.getRes("login_proto");protobuf.parse(loginStr, ProtoBufRoot);const Login = ProtoBufRoot.lookupType("login.Login");        let message = Login.create({ account: "qiu" , password: "204qiu"});console.log(`message = ${JSON.stringify(message)}`);    let buffer = Login.encode(message).finish();console.log(`buffer = ${Array.prototype.toString.call(buffer)}`);        let decoded = Login.decode(buffer); console.log(`decoded = ${JSON.stringify(decoded)}`);

一般我都会将ProtoBufRoot作为全局存放,这样引用方便,所以首字母大写了。当然我自己也是将其作为全局存放的,这里为了不将代码分散看起来凌乱,放在一起方便查看,只是抛砖引玉。

编译运行即可看到编码和解码的结果

message = {"account":"qiu","password":"204qiu"}buffer = 10,3,113,105,117,18,6,50,48,52,113,105,117decoded = {"account":"qiu","password":"204qiu"}

转载于:https://www.cnblogs.com/wxbqiu/p/7574899.html

你可能感兴趣的文章
【Silverlight】汉诺塔游戏,带AI
查看>>
BigDecimal的引入和概述
查看>>
Oracle database server architecture
查看>>
PhpStorm 4.0 & 5.0 部署本地Web应用
查看>>
StrictMode 详解
查看>>
xcode4的环境变量,Build Settings参数,workspace及联编设置
查看>>
JS中的几个弹出框用法及注意
查看>>
没忍住,听了rIPPER的,还是入手了个机械的
查看>>
linux rman shell
查看>>
struts2_Action之间的重定向传参
查看>>
网线接法
查看>>
相似度计算常用方法综述【转载+整理】
查看>>
不同场景下 MySQL 的迁移方案
查看>>
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
查看>>
Redis
查看>>
bzoj 1614 架设电话线
查看>>
Jquery——简介、安装
查看>>
利用反射来实现松耦合-.net反射技术封装
查看>>
js获取浏览器高度和宽度值(多浏览器 图解-经典) --- 转载
查看>>
vi不保存退出
查看>>