[LayaAir 2.0]Laya2下ts继承报错!

已邀请:

Aar0n

赞同来自:

多描述一下自己想做什么 做了哪些操作,直接怼一个图别人不明白你意思

柒汐夜

赞同来自:

唉,最讨厌看这种代码了。。
2.0的,没用过,也不敢用,像这种写法最怕的就是陷入死循环了。
 
大概说下问题所在(箭头指的是类结构的调用):
1.FAction_Stand--》2.FAction_Default--》3.FightRoleController--》4.FAction_SkillDefault--》2.FAction_Default
 
解析循环为啥会出现问题:
1.源码的写法是,先用一个缓存对象E将你要加载的类结构存起来,当你调用某个类结构index的时候,先去检测E[index]存在否,不存在,则创建E[index] = {},然后再去加载类结构存入E[index]。问题就在这里了,也就是说第一次调用2.FAction_Default时,缓存不存在,创建缓存,然后它开始去加载类结构,但加载到第4的时候又调用了2,此时缓存是存在的,但是该缓存还未初始化完毕,因此没有FAction_Default的声明部分,所以就报错了;
2.这里说下,类结构的加载过程中,类的声明是最慢的,也就是说类结构加载完才会有对应的类,你才能调用它。(看js文件源码的类结构部分,require的顺序,也就是对应import form的顺序是优先于类的声明的)
 
大概解决方法,砍掉循环,1和2,2和3,3和4之间,随便断开一个关联,使循环不成立即可。。

Aar0n

赞同来自:

项目正在查看,稍后答复

要回复问题请先

商务合作
商务合作