TS函数变量作用域问题

  • Creator 版本:

GameFunc类静态变量
1
调用Bundle方法加载Bundle包


方法

调试

问题:如何成功将GameFunc静态变量赋值,而又不写死在函数方法中?

资源加载没问题,就是变量作用域问题,求大佬

参数传 GameFunc 进去
这不是变量作用域问题

就是传的GameFunc

这个只能传类的对象进去吧,ts又没有ref

那就是行不通了吗 :upside_down_face:

你在回调里直接GameFunc.GameMapPxxxxxx = asset 就行了,你搁这改形参的值有什么意义?

这样不就写死了吗,以后很多静态变量怎么办

那你就扩展下方法 传个变量名进来

不太懂 怎么改
public static LoadBundle(rootNode : Node, Record : Record<string,any>, removeNodeUrl : string, StorageVariable : any) {
assetManager.loadBundle(Record[‘abName’], (err, bundle) => {
if (err) {
console.log(’[error!] Bundle not loaded -name:’+Record[‘assetUrl’])
return;
}
//
bundle.load(Record[‘assetUrl’],(err,asset : any)=>{
if (err) {
console.log(’[error!] asset not loaded -name:’+Record[‘assetUrl’])
return;
}
if (StorageVariable !== null){
//存储到指定变量中
StorageVariable = asset
console.log(GameFunc.GameMapPlistSpriteAtlas)
}
}

public static LoadBundle(rootNode : Node, Record : Record<string,any>, removeNodeUrl : string, StorageVariable : string) {
assetManager.loadBundle(Record[‘abName’], (err, bundle) => {
if (err) {
console.log(’[error!] Bundle not loaded -name:’+Record[‘assetUrl’])
return;
}
//
bundle.load(Record[‘assetUrl’],(err,asset : any)=>{
if (err) {
console.log(’[error!] asset not loaded -name:’+Record[‘assetUrl’])
return;
}
if (StorageVariable !== null){
//存储到指定变量中
GameFunc[StorageVariable]= asset
console.log(GameFunc[StorageVariable])
}
}
1赞

还是有点写死,GameFunc[StorageVariable]= asset,能不能获取到静态变量的类呢

因为我想的是后面有很多静态变量,用这个方法去加载到资源存储进去

一个是传入一个回调函数,在回调函数里赋值,另一个改成Promise 异步去加载完成后抛出再获取

我好像明白了,谢谢了,直接把类当参数



类当参数不友好。。。 等于你这个接口只能固定给这种类使用,不能给其他对象使用

不用,我就是想直接把类和静态丢进去能存就行,我不弄对象的