共享一个小脚本:自定义任务调度器

介绍

今天我在尝试发布web端的时候,发现场景切换太过缓慢。之后想起场景预加载:
cc.director.preloadScene(sceneName,finishCallback)
于是乎我在初始场景一连预加载了很多个场景。
代码就变成了这样:

cc.director.preloadScene(sceneName1,function(){
    cc.director.preloadScene(sceneName2,function(){
        cc.director.preloadScene(sceneName3,function(){
            cc.director.preloadScene(sceneName4,function(){
                finish()
            })
        })
    })
})

我是一万个不愿意的,稍稍琢磨,写出了这个粗糙的脚本。以应对多异步加载的情况。

使用方法

let tsr1 = TaskScheduler.createBlockedQuene(
    [
        function(){
        setTimeout(function(){
            cc.log('1')
            tsr1.taskFinish()
        },1200)},
        function(){
        setTimeout(function(){
            cc.log('2')
            tsr1.taskFinish()
        },1100)},
        function(){
        setTimeout(function(){
            cc.log('3')
            tsr1.taskFinish()
        },1000)},
        function(){
        setTimeout(function(){
            cc.log('4')
            tsr1.taskFinish()
        },1400)}
    ],
    function(){
        cc.log('tsr1 finish')
    })
    tsr1.setProgressCallback(function(taskCount){
        cc.log('tsr1:'+taskCount)
    })

##脚本文件及范例
https://github.com/LittleMoi/TaskSchedulerExample

##已知问题

  1. 作为插件在构建时报错。(手动转义为ES5,已解决)
2赞