[LayaAirIDE 2.0]自定义场景继承导出,会在自定义类中加入Laya.前缀导致layaMaxUI文件报错
ui工程,一个普通场景A,继承基类场景Base,导出场景后,layaMaxUI.ts,会报Base找不到,找不到的原因,工程默认生成给Base加了Laya.前缀。
layaMaxUI.ts代码如下
export gm {
export class GmPanelUI extends Laya.Base {
public bg:Laya.Sprite;
public input:Laya.TextInput;
public btnSend:Laya.Button;
public btnClose:Laya.Button;
constructor(){ super()}
createChildren():void {
super.createChildren();
this.createView(GmPanelUI.uiView);
}
}
}
2.0之前版本,是不会把Laya.前缀加上,请问这个问题,如何解决?
layaMaxUI.ts代码如下
export gm {
export class GmPanelUI extends Laya.Base {
public bg:Laya.Sprite;
public input:Laya.TextInput;
public btnSend:Laya.Button;
public btnClose:Laya.Button;
constructor(){ super()}
createChildren():void {
super.createChildren();
this.createView(GmPanelUI.uiView);
}
}
}
2.0之前版本,是不会把Laya.前缀加上,请问这个问题,如何解决?
要回复问题请先登录
9 个回复
Aar0n
赞同来自:
ycc2004
赞同来自:
CloudD
赞同来自:
Another
赞同来自:
康伟
赞同来自:
Aar0n
赞同来自:
gamedaybyday2
赞同来自:
136*****740
赞同来自:
// 如果是发布时调用编译功能,增加prevTasks
let prevTasks = "";
if (global.publish) {
prevTasks = ["loadConfig","替换Laya前缀"];
}else{
prevTasks = ["替换Laya前缀"]
}
const fs = require("fs");
function readFile(path) {
if (fs.existsSync(path)) {
return fs.readFileSync(path, "utf-8");
}
return null;
}
gulp.task('替换Laya前缀', function(){
var layaMaxUI_Path = workSpaceDir + "/src/ui/layaMaxUI.ts"
let fileContent = readFile(layaMaxUI_Path);
console.log("读取文件",fileContent)
if (fileContent ) {
fileContent = fileContent.replace(/Laya\.UICodeView/g,"UICodeView");
fs.writeFileSync(layaMaxUI_Path, fileContent, 'utf-8');
}
}
);
石圣
赞同来自:
由于今天心情比较好,所以就去研究了一下解决方案,刚好发现了这个小bug所在,哈哈,具体方法如下:
1.找到Laya安装目录下的layabuilder.max.js这个文件。
如果是mac系统,目录可以参考下面,记得将版本号改为自己使用的版本!
/Applications/LayaAirIDE_beta.app/Contents/Resources/app/out/vs/layaEditor/h5/layabuilder.max.js
用windows的同学请自行找目录哈。
2.找到下面代码,具体行号不同版本可能不一样,仅供参考
24522 if(this.projectSetting.codeType==1){
24523 classObj["classType"]="Laya." + baseName;
24524 }
3.修改为下面样子,其实就是去掉了"Laya."这个前缀
24522 if(this.projectSetting.codeType==1){
24523 classObj["classType"]= baseName;
24524 }
4.重启LayaIDE,导出就发现666了。大多数同学的问题到这里就解决完毕了。有好奇心的同学可以继续看看下一步~
5.注意这里会将所有的"Laya."前缀都去掉,大家可以根据自己需要做判断。也可以在F9设置里把需要Laya前缀的类加到“Code导入类”里面来解决这个问题。