0%

CVP认证学习笔记--(何小成)010--节点的计划任务

作业

本节内容讲解节点的计划任务,计划任务在游戏中或许是在常见不过的内容了,我们之所以能看到游戏画面中各种精灵的跳动、图层的移动等,都要归功于节点的计划任务,比如蓝天背景中的白云在飘,偶尔还飞过一只小鸟,比如天上偶尔掉下一块金子(当然现实中不会有这种好事。。。),这一切游戏中活物,都是节点的计划任务的功劳,想象下,如果没有计划任务,那么游戏世界一片死寂。

API

废话不多说,直接了解节点计划任务的API,虽然课程中只讲了两个API,schedule和unschedule,但搜索cocosjs的文档后,可以了解,其实他还有其他强大的用法,总结一下计划任务的API如下:

1
2
3
4
5
6
7
8
9
10
11
var node = new cc.Node();
// node的update函数将会在每一帧被执行
node.scheduleUpdate();
// callback回调函数会重复得在每个interval时间间隔之后被执行,重复次数为repeat次,并且这个任务会在delay延时之后开始执行
node.schedule(callback, interval, repeat, delay);
// callback回调函数会在delay延时之后被执行一次
node.scheduleOnce(callback, delay);
// 取消callback任务
node.unschedule(callback);
// 取消node节点所有计划中的任务
node.unscheduleAllCallbacks();

作业

不同游戏的不同需求,不同应用场景,可以灵活使用计划任务,让游戏活起来。课后的作业是使用节点的计划任务让节点不断的自我旋转,其代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        // 添加要执行节点任务的节点
        var logo=new cc.Sprite(res.HelloWorld_png);
        this.addChild(logo);
        logo.setTag(111);
        logo.setPosition(cc.winSize.width/2,cc.winSize.height/2);
        //每个节点node都可以绑定一些处理逻辑,在每一帧都会被调用
        var itemstart=new cc.MenuItemFont("启动",this.start,this);
        var itemstop=new cc.MenuItemFont("停止",this.stop,this);
        itemstop.setPositionY(50);
        var menu=new cc.Menu(itemstart,itemstop);
        menu.setAnchorPoint(0,0);
        menu.setPosition(100,100);
        this.addChild(menu);
        
        // 节点任务的回调函数
        // 开始节点任务
        start:function(){
            //启动计划任务
            this.schedule(this.update);
        },
        // 停止节点任务
        stop:function(){
            this.unschedule(this.update);
        },
        // 更新回调函数
        update:function(){
            var nowlogo=this.getChildByTag(111);
            nowlogo.setRotation(nowlogo.getRotation()+5);
        }

最终运行效果

http://www.cocoscvp.com/usercode/2016_04_18/ac5da37fd647d075cb9c4e67062a368cc469a636/

大爷赏点儿呗.

欢迎关注我的其它发布渠道