Javascript 浏览事件发射器问题
我正在使用一个资产加载器,这个类继承了EventEmitter,用于progress&over events 我是这样用的Javascript 浏览事件发射器问题,javascript,node.js,javascript-events,browserify,Javascript,Node.js,Javascript Events,Browserify,我正在使用一个资产加载器,这个类继承了EventEmitter,用于progress&over events 我是这样用的 // LOAD INITIAL ASSETS & START GAME AFTER assets.on('over',function() { // START GAME HOB.start(); }); assets.load({'loadingBackground' : '/img/loading
// LOAD INITIAL ASSETS & START GAME AFTER
assets.on('over',function() {
// START GAME
HOB.start();
});
assets.load({'loadingBackground' : '/img/loadingBackground.png'});
这很有效,但是
加载结束时,打开我的加载功能。我使用removeAllListeners
var progress = function() {
if(filesLoaded < filesToLoad) {
...
} else {
...
that.emit('over',filesLoaded);
if(removeEvents)
that.removeAllListeners();
}
}
|->不工作
一件有趣的事情是_events属性在第二个.on'over'之后为空
你有什么想法吗?提前谢谢你
编辑
我找到了一种覆盖on方法的方法
碰巧,您是否在我们的进度函数中的某个点将加载的文件还原为0?加载所有内容后,是否将其重置为0,但忘记将filesToLoad也重置为0?它可能会阻止over事件再次发出。我每次使用load函数时都会重置所有内容,如果我在else语句中添加控制台日志,就会看到它。我认为,问题其实与排放有关/
// LOAD ASSETS AND MAP & SET PLAY STATE AFTER
assets.on('over',function () {
// LOAD BASE MAP & SET STATE
...
currentState = PlayState
});
console.log(assets._events); // -> return empty ({})
assets.load({
'001-Grassland01' : 'img/tilesets/001-Grassland01.png',
'002-Woods01' : 'img/tilesets/002-Woods01.png',
'015-ForestTown01' : 'img/tilesets/015-ForestTown01.png'
});
var AssetsManager = function () {
...
this.on = function(event,func) {
if(this._events[event])
delete this._events[event];
return this.__proto__.on.call(this,event,func);
};
...
}