/** * Created by lovell on 16/6/20. *//** * HTML decode * @param str * @returns {string} */pg.HTMLDecodeByRegExp = function (str) { var s = ""; if (str.length == 0) return ""; s = str.replace(/&/g,"&"); s = s.replace(/</g,"<"); s = s.replace(/>/g,">"); s = s.replace(/ /g," "); s = s.replace(/'/g,"\'"); s = s.replace(/"""/g,"\""); return s;};/** * safe retain * @param obj * @constructor */pg.SAFERETAIN = function (obj) { if (obj && obj.retain) { obj.retain(); }};/** * safe release * @param obj * @constructor */pg.SAFERELEASE = function (obj) { if (obj && obj.release) { obj.release(); }};/** * load proto file,return contents * @param path * @param str * @returns {!ProtoBuf.Builder.Message|!Object.<string,*>} */pg.loadProto = function (path,str) { if (typeof dcodeIO === 'undefined' || !dcodeIO.ProtoBuf) { throw (new Error("ProtoBuf.Js is not present. Plese see Please see www/index.HTML for manual setup instructions.")) } var ProtoBuf = dcodeIO.ProtoBuf; var Contents = ProtoBuf.loadProtofile(path).build(str); return Contents ? Contents : null;};/** * create proto * @param path * @param str * @returns {*} */pg.createProto = function (path,str) { var Proto = new pg.loadProto(path,str); var data = new Proto(); return data ? data : null;};/** * read msg * @param msg * @returns {Uint8Array} */pg.readMsg = function (msg) { if (!msg) { return null; } var binary = new Uint8Array(msg); var message = new Uint8Array(binary.byteLength - 4); for (var i = 0; i < binary.byteLength - 4; i++) { message[i] = binary[4 + i]; } return message;};/** * write msg * @param type * @param msg * @returns {Uint8Array} */pg.writeMsg = function (type,msg) { if (!type || !msg) { return null; } var binary = msg.toArrayBuffer(); var byteLength = binary.byteLength + 4; msg = new ArrayBuffer(4 + byteLength); var vIEw = new Uint8Array(msg); var len = 2; var tmp = new Uint8Array(len); for (var i = 0; i < len; i++) { tmp[i] = 0xff & (byteLength >> (8 * (len - i - 1))); vIEw[i] = tmp[i]; } tmp = new Uint8Array(len); for (var i = 0; i < len; i++) { tmp[i] = 0xff & (type >> (8 * (len - i - 1))); vIEw[i + 2] = tmp[i]; } tmp = new Uint8Array(binary); for (var i = 0; i < byteLength; i++) { vIEw[i + 4] = tmp[i]; } return msg;};/** * get msg type * @param msg * @returns {number} */pg.getMsgType = function (msg) { if (!msg) { return 0; } var binary = new Uint8Array(msg); var type = 0; for (var i = 0; i < 2; i++) { type |= binary[i + 2] << (8 * (2 - i - 1)); } return type;};总结
以上是内存溢出为你收集整理的Cocos-JS 网络通讯读写消息以及加载proto文件全部内容,希望文章能够帮你解决Cocos-JS 网络通讯读写消息以及加载proto文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)