[LayaAirIDE 2.0]多个模块之间相互嵌套import,导致运行报错

我分析应该是Animal、Person、Cat、Manager四个模块之间互相有import导致的,但是这在项目开发中基本无法避免啊。。。
请教一下该怎么去解决呢?
 demo已上传,GameControl.ts中33行导致demo运行后报错,TypeError: Object prototype may only be an Object or null: undefined.
 
已邀请:

Ex木

赞同来自:

其实是Manager身兼多职引起的,在Animals中不要引用Manager。应该引入event机制,当Anaimal的attack动作发生时,触发'attack' 事件,而在Manager里监听attack事件,调用自已的change函数。
Animal.ts
class Animal implements EventEmiter
{
public sex: number = 0;

public Create(): void
{}

public Attack(): void
{
this.emit('attack');
}
}

Manager.ts
public CreateCat(): void
{
let self = this;
let cat = new Cat();
cat.Create();
cat.on('attack', function () {
self.Change();
});
this.animals.push(cat);
}

 

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作