重现步骤:
cocos creator 1.3.3
新建helloworld工程
在工程目录下执行 npm install protobufjs
在随便一个场景的button点击事件执行以下代码
on_click_button: function() {
var VIEW = this;
var file = './resources/proto/awesome.proto';
var file_url = cc.url.raw(file);
cc.loader.load(file_url, function(err, tex) {
cc.log('loaded = ', tex);
var protobuf = require('protobufjs');
cc.log("load protobuf=", protobuf);
var pr = protobuf.parse(tex);
cc.log("load pr =", pr);
var AwesomeMessage = pr.root.lookup("awesomepackage.AwesomeMessage");
cc.log("AwesomeMessage = ", AwesomeMessage);
// Create a new message
var message = AwesomeMessage.create({
awesomeField: "AwesomeString",
testErr: "asdfasdf"
});
// Encode a message
var buffer1 = AwesomeMessage.encode(message).finish();
// Decode a buffer
var message = AwesomeMessage.decode(buffer1);
cc.log(" field = " + message.awesomeField + " \n test = " + message.testErr);
});
},
保存执行, 浏览器OK, windows模拟器OK, 但在android平台上报错
01-10 19:53:43.213: D/cocos2d-x debug info(3913): this is … test
01-10 19:53:43.237: D/cocos2d-x debug info(3913): loaded = // awesome.proto
01-10 19:53:43.237: D/cocos2d-x debug info(3913): package awesomepackage;
01-10 19:53:43.237: D/cocos2d-x debug info(3913): syntax = “proto3”;
01-10 19:53:43.237: D/cocos2d-x debug info(3913):
01-10 19:53:43.237: D/cocos2d-x debug info(3913): message AwesomeMessage {
01-10 19:53:43.237: D/cocos2d-x debug info(3913): string awesome_field = 1; // becomes awesomeField
01-10 19:53:43.237: D/cocos2d-x debug info(3913): }
01-10 19:53:43.240: D/ScriptingCore.cpp(3913): ScriptingCore:: compileScript fail:buffer
01-10 19:53:44.916: D/cocos2d-x debug info(3913): this is … test
01-10 19:53:44.935: D/cocos2d-x debug info(3913): loaded = // awesome.proto
01-10 19:53:44.935: D/cocos2d-x debug info(3913): package awesomepackage;
01-10 19:53:44.935: D/cocos2d-x debug info(3913): syntax = “proto3”;
01-10 19:53:44.935: D/cocos2d-x debug info(3913):
01-10 19:53:44.935: D/cocos2d-x debug info(3913): message AwesomeMessage {
01-10 19:53:44.935: D/cocos2d-x debug info(3913): string awesome_field = 1; // becomes awesomeField
01-10 19:53:44.935: D/cocos2d-x debug info(3913): }
01-10 19:53:44.936: D/cocos2d-x debug info(3913): load protobuf= [object Object]
01-10 19:53:44.936: E/cocos js error:(3913): assets/src/project.dev.js line:7241 msg:TypeError: protobuf.parse is not a function
跪求高手指点迷津
补充一下, PB脚本如下:
// awesome.proto
package awesomepackage;
syntax = “proto3”;
message AwesomeMessage {
string awesome_field = 1; // becomes awesomeField
}