protobufjs 在 cocos creator1.6 上的应用 附加应用代码

使用cocos creator 1.6 没几天 遇到了 protobufjs 的坑。查了以下度娘发现 用 protobufjs 6.8.0 很方便。但是它跟 5.0 使用上 不同。得到了 “基于protobufjs6.8.0的插件,适用于creator1.6+” 作者 catfish 的指点以后 终于跑通了。给大家分享以下。:grin:

1: https://github.com/dcodeIO/protobuf.js 去这里下载 protobufjs6.8.0 然后在 dist 目录下 找到 protobuf.js 文件或者 protobuf.min.js 用插件添加方式 添加到 cocos creator 里 复制粘贴到 easter 文件里 然后在 cocos creator 弹出框里点击 是 就行了。

2: proto 文件放在 resources 文件夹下面。 我的是放在 resources 文件夹下的 proto 文件夹里 记得写正确路径就行。没有resources 文件夹 可以创建一个。

3: 以下是使用代码

onLoad: function () {
    cc.game.addPersistRootNode(this.node);
    this.init();
},
init : function () {

    if (typeof protobuf === 'undefined')
    {
        throw(new Error("protobuf is undefined"));
    }
    //proto 文件路径
    var protoPath ="resources/proto/chrismas.proto";

    var self = this;
    //加载protos 文件
    protobuf.load(cc.url.raw(protoPath), function(err,data){
        self.proto = data;
        //以下是测试代码
        //我在proto 文件里创建了 WxLogin 的 message
        //创建消息
        var testData1 = self.createProtoBuf("WxLogin",{code:'1',openid:'12345'});
        //解析消息
        var testData2 = self.parseProtoBuf("WxLogin",testData1);
        cc.log("testData1=  ",testData1);
        cc.log("testData2=  ",testData2);
    });
},
createProtoBuf:function(msg,data){
    var msg_class = this.proto.lookupType(msg);
    var message = msg_class.create(data);
    var body = msg_class.encode(message).finish();
    return body;
},
parseProtoBuf:function(msg,data){
    var msg_class = this.proto.lookupType(msg);
    var body = msg_class.decode(data);
    return body;
}
5赞

这里还有我参考过的文章
http://forum.cocos.com/t/protobufjs6-8-0-creator1-6/50642
http://www.jianshu.com/p/1b90dd4bcb0a

支持一下~~~

怎么把protobuf引入到代码离呢,我导入后,直接写protobuf,识别不出来

这里是啥意思?

我也识别不出来,麻烦问下你后面识别出来了吗

1.6版本?

https://mp.weixin.qq.com/s/OIkcsJQfLSXnZoUfXZ61AQ

看看这个有帮助么,虽然不是1.6版本

protobuf.js导入为插件