我想实现在每个场景onload的时候调用某个方法,所以想重写onload,然后统一处理,能否实现?
您好,可有解决方法?
ClassA继承cc.Component,ClassA的onload方法执行A`方法,ClassBC…均继承ClassA,并不重写ClassA的onload方法,那么onload执行时,如果子类没有onload,则会主动执行父类的onload。如果要重写,则需要在重写过的onload方法中调用super.onload();
不行哎,我想实现的就是类似下面这种
window._console = console;
window.console = function(){
// do something
window._console.log()
}
我原本是想着 直接定义cc.component.onLoad = ()=>{} ,但是发现脚本实际上是去重写了onLoad,所以删掉了
你如果是这种需求,就定义
cc.component.onLoad = ()=>{
// do something
if(this.awake){//脚本使用这个awake 作为启动函数
this.awake()
}
}
这个awake是什么?
随便定义一个函数0.0
这个是组件也会执行哎,怎么区分是场景呢,我现在发现是button也会走onload
4楼说的不行吗通过继承实现,不过每个子类在onload的时候都需要调用super.onLoad。
你举的例子window是个全局的实例啊,更换一个全局的实例的某个方法跟继承还是有点区别。
cc.component.onLoad = ()=>{
if (this.node instanceof cc.Scene){
// do something
if(this.awake){//脚本使用这个awake 作为启动函数
this.awake()
}
}else{
this.onLoad()
}
}
我就是不想去每个子类都加代码。要不然我也不会想着去拦截onload了。
__preload 重载这个函数,
记得在函数里面调用父类的__preload
我正在尝试你的方法吗,不过好像随便一个组件都能触发onLoad,我接下来要去看怎么把它们区分开,也许可以通过name属性来判断
如果想要在每个场景中调用某个固定方法的话,这边有另外一个思路
写一个新类View,继承自cc.Component
在view里面的onLoad调用该方法
然后你后面所有的界面类都继承View就可以了。
好的,我试试
统一回复,感谢大家的评论,最终方式使用如下:
cc.director.on(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function(){
const times = Date.now() - T.pageStart;
console.log(’---------load’, times)
})