Cocos2d-js jsb native 运行嵌套proto文件读取失败问题解决方案

前端之家收集整理的这篇文章主要介绍了Cocos2d-js jsb native 运行嵌套proto文件读取失败问题解决方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. Util.fetch = function(path,callback) {
  2. if (callback && typeof callback != 'function')
  3. callback = null;
  4. if (Util.IS_NODE) {
  5. var fs = require("fs");
  6. if (callback) {
  7. fs.readFile(path,function(err,data) {
  8. if (err)
  9. callback(null);
  10. else
  11. callback(""+data);
  12. });
  13. } else
  14. try {
  15. return fs.readFileSync(path);
  16. } catch (e) {
  17. return null;
  18. }
  19. } else {
  20. if(cc.sys.isNative) {
  21. //Native版本需要特殊处理下ProtoBuf的读取方式
  22. var msg = jsb.fileUtils.getStringFromFile(path);
  23. if(callback){
  24. callback(msg);
  25. }else{
  26. return msg;
  27. }
  28. }else{
  29. var xhr = Util.XHR();
  30. xhr.open('GET',path,callback ? true : false);
  31. // xhr.setRequestHeader('User-Agent','XMLHTTP/1.0');
  32. xhr.setRequestHeader('Accept','text/plain');
  33. if (typeof xhr.overrideMimeType === 'function') xhr.overrideMimeType('text/plain');
  34. if (callback) {
  35. xhr.onreadystatechange = function() {
  36. if (xhr.readyState != 4) return;
  37. if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))
  38. callback(xhr.responseText);
  39. else
  40. callback(null);
  41. };
  42. if (xhr.readyState == 4)
  43. return;
  44. xhr.send(null);
  45. } else {
  46. xhr.send(null);
  47. if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))
  48. return xhr.responseText;
  49. return null;
  50. }
  51. }
  52. }
  53. };

猜你在找的Cocos2d-x相关文章