[LayaAirIDE 2.0]LayaAirIDE2.7版本导出类名不正确问题
如果你的项目代码类型是TypeScript,从LayaAirIDE 2.7版本开始导出的类名所在命名空间就不再是清一色的Laya命名空间,如“Laya.xxx”,而会出现小写的laya命名空间,一般为“laya.display.xxx”。
如果你读过Laya2.7中的框架源码,那么可以发现在这个版本中,window上面不会挂载小写laya命名空间,而只会挂载大写Laya的命名空间,故访问小写laya命名空间时会报错“laya is not defined”。
但这句在2.7版本中改成了这样
那么在2.7版本中的这句话是什么意思呢?意思是从LayaAirIDE安装目录中的resources\app\out\vs\layaEditor\renders\laya.editorUI.xml文件中取出类名对应XML节点的runClass属性值作为TS导出的类名,那么很显然在这XML里的runClass全部都是小写的laya命名空间
那么临时的解决方案就是修改刚才截图中提到的layabuilder.max.js文件(文件完整路径可以看截图中文件名下方的breadcrumbs)中红框代码,将其修改为和2.6版本中一致就行,或者你可以装回LayaAirIDE2.6版本。
不过最终解决方案当然是官方能够及早修复此问题并在下一版中让我们能免除后顾之忧
如果你读过Laya2.7中的框架源码,那么可以发现在这个版本中,window上面不会挂载小写laya命名空间,而只会挂载大写Laya的命名空间,故访问小写laya命名空间时会报错“laya is not defined”。
//laya.core.js源码,可以看到只在window上挂载了大写Laya的命名空间那么出现这个问题的原因是官方在LayaAirIDE类导出部分的代码有变化,在2.6版本中有这样一句:
window.Laya= (function (exports) {
......
exports.Sprite = Sprite;
exports.EffectAnimation = EffectAnimation;
.....
return exports;
})({}))
但这句在2.7版本中改成了这样
那么在2.7版本中的这句话是什么意思呢?意思是从LayaAirIDE安装目录中的resources\app\out\vs\layaEditor\renders\laya.editorUI.xml文件中取出类名对应XML节点的runClass属性值作为TS导出的类名,那么很显然在这XML里的runClass全部都是小写的laya命名空间
那么临时的解决方案就是修改刚才截图中提到的layabuilder.max.js文件(文件完整路径可以看截图中文件名下方的breadcrumbs)中红框代码,将其修改为和2.6版本中一致就行,或者你可以装回LayaAirIDE2.6版本。
不过最终解决方案当然是官方能够及早修复此问题并在下一版中让我们能免除后顾之忧
没有找到相关结果
已邀请:
要回复问题请先登录
3 个回复
kylin9718
赞同来自:
这两处修改是同时做的,并且仅提供给了论坛上部分开发者,还没有正式发出去。
S_eVent
赞同来自:
kylin9718
赞同来自:
因为修改还没有合并到发布分支,预计发布的时间会在9月份或者10月份
https://ask.layabox.com/question/47163?notification_id=107061&rf=false&item_id=41359&answer_id=41359&single=TRUE#!answer_41359