preloadScene的callback无法找到上下文

this是undefined,怎么办呢?

用bind试试看

1赞

preloadScene的callback这么写的话,onSceneLoaded函数里面的this是callback的上下文
在loadScene里面这样写试试
var self=this;
var func=function(){self.onSceneLoaded}
cc.director.preloadScene(sceneName,func);

这里的callback就是onSceneLoaded,onSceneLoaded的上下文与loadScene的上下文不应该是一样的吗?

cc.director.preloadScene(sceneName, this.onSceneLoaded.bind(this)); 这样写确实可以,但问题是
onSceneLoaded的上下文与loadScene的上下文不应该是一样的吗?

为啥还要bind下?不明白了。。。。

回调不是由当前脚本调用的,而是由引擎调用的

1赞

所以感觉引擎这点写的有点问题。。。

你只传了函数对象进去,没有传调用者,假设你的函数有个参数,你传了一个对象的属性,你能在函数内获取到这个参数所属的对象吗?应该不能吧?只能获取到参数的值,函数也一样,你没有传调用者进去,只传了函数本身,以上纯属个人看法,如有错误请指正

var a = {c:10,b:20};

function call(v){

}

call(a.c)

你不能在函数内通过v获取到v所属的对象吧?

2赞

这是 js 的基础问题,如果不理解热心群众的解答,建议学习一下 js ~~~

你只是声明了一个回调函数。但是回调函数的作用于取决于调用它的对象。
所以你在声明回调函数的时候打印出this,这自然是undefined.

没有用