cocos2d-JS核心概念

1.导演
导演类cc.Director用于管理场景,采用单例设计模式,在整个工程中只有一个实例对象,由于是单例模式,能够保存一致的配置信息,便于管理场景对象,获得导演类Director实例语句如下:
var director=cc.Director._getInstance()
也可以在程序中直接使用cc.director,该对象是在框架内使用如下语句进行赋值:
cc.director=cc.Director._getInstance()
所以cc.director只是cc.Director的实例对象。
导演对象职责如下:
(1)访问和改变场景
(2)访问Cocos2d-JS的配置信息
(3)暂停,继续和停止游戏
(4)转换坐标
2.场景
场景类cc.Scene是构成游戏的界面,场景大致可以分为以下几类:
(1)展示类场景
(2)选项类场景
(3)游戏场景
3.层
为了让不同的层可以组合产生统一的效果,这些层基本上都是透明或者半透明的。层的叠加是有顺序的。
4.精灵
5.菜单
在cocos2d-js中菜单类是cc.Menu,cc.Menu类派生于cc.Layer
在菜单中又包含了菜单项cc.MenuItem,cc.MenuItem有很多形式的子类,如cc.MenuItemLabel,cc.MenuItemSprite和cc.MenuItemToggle。它表现出不同的效果,每个菜单项都有三个基本状态,正常,选中,和禁止
6.Node与Node层级架构
Cocos2d-JS采用层级结构管理场景、层、精灵、文本、地图和粒子系统等节点对象。
7.Node中重要的操作
(1)var childNode=new cc.Node()
(2)node.addChild(childNode,0,123)增加新的子节点,第二个参数是Z轴绘制顺序,第三个参数是标签。
(3)var childNode=node.getChildByTag(123),查找子节点,通过标签查找子节点。
(4)node.removeChildByTag(123,true)通过标签删除子节点,并停止所有该子节点上的一切动作。
(5)node.removeChild(childNode,true)删除childNode节点,并停止所有该子节点上的一切动作。
(6)node.removeAllChildrenWithCleanup(true),删除node节点的所有子节点,并停止这些子节点上的一切动作
(7)node.removeFromParentAndCleanup(true),从父节点删除node节点,并停止所有该节点上的一切动作
8.Node中的重要属性
position和anchorPoint
9.游戏循环与调度
每一个游戏程序都有一个循环在不断运行,它是由导演对象来管理、维护,如果需要场景中的精灵运动起来,可以在游戏循环中使用定时器(cc.Scheduler)对精灵等对象的运行进行调度。因为cc.Node类封装了cc.Scheduler类,所以也可以直接使用cc.Node中定时器相关方法。
cc.Node中定时器相关方法主要有:
(1)scheduleUpdate()每个Node对象只要调用该方法,那么这个Node对象就会定时地每帧回调用一次自己的update(dt)方法
(2)schedule(callback_fn,interval,repeat,delay)与scheduleUpdate方法功能一样,不同的是,可以指定回调方法(通过callback_fn指定)interval是时间间隔,repeat是执行的次数,delay是延迟执行的时间。
(3)unscheduleUpdate()停止update(dt)方法调度。
(4)unschedule(callback_fn)可以指定具体方法停止调度
(5)unscheduleAllCallbacks()可以停止所有的时间调度
10.在app.js文件中添加调度使用

cocos2d-JS核心概念_第1张图片
为了能够在ctor方法之外访问标签对象,需要为标签设置Tag属性,其中32行代码就是设置Tag属性,第66行代码就是通过Tag属性重新获得这个标签对象。
为了能够开始调度,还需要在ctor方法中调用scheduleUpdate见第35行或第34行代码
为了省电等,如果不再使用调度,一定不要忘记停止调度,可以在Close菜单项的单击事件中停止调度。
cocos2d-JS核心概念_第2张图片
第13行代码就是停止调度update,如果是其他的调度方法,则可以采用unschedule或unscheduleAllSelectors停止

你可能感兴趣的:(导演,场景,游戏循环与调度,Node中重要的操作)