目前的pbkiller是异步加载的,一定要把proto的加载放在pbkiller.preload(callback){}里面。对于一些复杂的proto,某些字段常常是null,所以我想把信息都打包成一个个对象,作为另一个js文件导入。但是我尝试了很多方法,都没有办法保证pbkiller.preload(callback){}的callback完全执行完毕。换言之,我只想要同步的解决方案……以下是我的尝试。
尝试1. 让主页menu.js继承proto.js。proto.js里在onLoad里异步加载。这样有时会加载失败。
// menu.js
cc.Class({
extends: require(“proto”),
properties: {
},
// LIFE-CYCLE CALLBACKS:
// onLoad() {
// },
start() {
console.log(self);
console.log(self.protos);
console.log(self.protos.bail);;
},
// update (dt) {},
});
// proto.js
var pbkiller = require(“pbkiller”);
cc.Class({
extends: cc.Component,
properties: {
protos: {
default: null,
type: Object,
// get () {
// return this._bar;
// },
// set (value) {
// this._bar = value;
// }
},
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
var self = this;
pbkiller.preload(function () {
var pb = pbkiller.loadAll();
self.protos = {};
self.protos.bail = new pb.poster.Bail();
self.protos.bail.Req = new pb.poster.Bail.REQ();
});
},
start() {
},
// update (dt) {},
});
尝试2.
var self = require(“Proto”);
cc.Class({
extends: cc.Component,
properties: {
},
// LIFE-CYCLE CALLBACKS:
// onLoad() {
// },
start() {
console.log(self);
console.log(self.protos);
console.log(self.protos.bail);;
},
// update (dt) {},
});
// Proto.js
var pbkiller = require(“pbkiller”);
var self = {};
pbkiller.preload(function () {
var pb = pbkiller.loadAll();
self.protos = {};
self.protos.bail = new pb.poster.Bail();
self.protos.bail.Req = new pb.poster.Bail.REQ();
});
module.exports = self;
这样浏览器是没问题了,但是编辑器会报错。
所以 pbkiller就没有一个同步的解决方案吗?????????