[LayaAir 2.0]升级到2.0后.原本用字符串索引module内的函数,发现不行了, 求指教
1.x版本把每个ts编译成为一个js。并且namespace和module暴露在全局空间里,不用import就可以namespace.XXX和module.xxx引用。
我还发现2.x版本已经不同了.只编译import的, 原来的代码编译不过了, 研究了好久也没研究出方法. 请大大帮忙答疑一下.
例如: a.ts
module proto{
export function msg1(){
console.log("msg1");
}
}
b.ts
module proto{
export function msg2(){
console.log("msg2");
}
}
然后再main.ts里面.
function dispatchMsg(name: string){
let fun = proto[name];
fun();
}
dispatchMsg("msg1");
这样就能反射到对应的函数并且调用了,
到了2.x就不行了, 希望能帮忙解答一下.怎么把上面的代码转到2.x下使用?
我的问题应该能用2.x的官方例子提供的如下代码能解决,
if (window["Laya3D"]) Laya3D.init(GameConfig.width, GameConfig.height);
else Laya.init(GameConfig.width, GameConfig.height, Laya["WebGL"]);
Laya["Physics"] && Laya["Physics"].enable();
Laya["DebugPanel"] && Laya["DebugPanel"].enable();
我看了下. Laya也是module, 但我自己写成module, ide就会提示 不能将命名空间"proto"用作值.
Laya是用什么技术来实现这个的, 求指教
这个提问有点类似, 但想解决的问题不相同. https://ask.layabox.com/question/39307
看了也依然解决不了我的疑问
我还发现2.x版本已经不同了.只编译import的, 原来的代码编译不过了, 研究了好久也没研究出方法. 请大大帮忙答疑一下.
例如: a.ts
module proto{
export function msg1(){
console.log("msg1");
}
}
b.ts
module proto{
export function msg2(){
console.log("msg2");
}
}
然后再main.ts里面.
function dispatchMsg(name: string){
let fun = proto[name];
fun();
}
dispatchMsg("msg1");
这样就能反射到对应的函数并且调用了,
到了2.x就不行了, 希望能帮忙解答一下.怎么把上面的代码转到2.x下使用?
我的问题应该能用2.x的官方例子提供的如下代码能解决,
if (window["Laya3D"]) Laya3D.init(GameConfig.width, GameConfig.height);
else Laya.init(GameConfig.width, GameConfig.height, Laya["WebGL"]);
Laya["Physics"] && Laya["Physics"].enable();
Laya["DebugPanel"] && Laya["DebugPanel"].enable();
我看了下. Laya也是module, 但我自己写成module, ide就会提示 不能将命名空间"proto"用作值.
Laya是用什么技术来实现这个的, 求指教
这个提问有点类似, 但想解决的问题不相同. https://ask.layabox.com/question/39307
看了也依然解决不了我的疑问
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
AzureSky
赞同来自: