cc.director:
cc.director 是管理游戏逻辑流程的单例类.由于它是一个单例,所以你不用调用任何构造方法或者create方法
cc.director 还负责以下内容:
- 初始化OpenGL上下文
- 设置OpenGL像素格式(默认为RGB565)
- 设置OpenGL缓冲深度(默认为1)
- 设置投影(默认为1,代表3D)
- 设置方向(默认为1,代表竖屏)
cc.director也设置默认OpenGL上下文:
- 激活GL_TEXTURE_2D
- 激活GL_VERTEX_ARRAY
- 激活GL_COLOR_ARRAY
- 激活GL_TEXTURE_COORD_ARRAY
cc.director还与显示的刷新速率同步时间.
特性和限制:
- 定时器时间和绘图要和显示的刷新率同步
- 只支持动画间隔为1/60,1/30,1/15
用于cc.director的监听事件
<static> <constant>
cc.Director.EVENT_AFTER_DRAW 绘制cc.Director后的事件
<static> <constant>
cc.Director.EVENT_AFTER_UPDATE
cc.Director更新后的事件
<static> <constant>
cc.Director.EVENT_AFTER_VISIT cc.Director访问后的事件
<static> <constant>
cc.Director.EVENT_PROJECTION_CHANGED cc.Director投影变化后的事件
<static> <constant>
cc.Director.PROJECTION_2D 2D投影常量(正交投影)
<static> <constant>
cc.Director.PROJECTION_3D 3D投影常量,fovy=60,znear=0.5f,zfar=1500
<static> <constant>
cc.Director.PROJECTION_CUSTOM 自定义投影常量,如果想设置cc.Director的投影,可调用投影代理的updateProjection方法
<static> <constant>
cc.Director.PROJECTION_DEFAULT cc.Director的默认投影常量,默认为3D投影
用法例子:
cc.eventManager.addCustomListener(cc.Director.EVENT_PROJECTION_CHANGED, function(event) {
cc.log("Projection changed.");
});
常用方法:
{cc.Size} getWinSize() 返回WebGL视图的点大小.它会考虑窗口任何形式的旋转(设备横竖方向)
{cc.Scene} getRunningScene() 返回当前正在运行的场景.导演类同一时间只能运行一个场景.
{cc.ActionManager} getActionManager() 返回导演类里的cc.ActionManager//cc.ActionManager是一个管理动作的类.
(待续。。)
cc.p(x,y) =>cc.Point(x, y)<-(但不要用)
cc.node.setAnchorPoint(point, y)//调用 设置锚点,用百分比表示.
{cc.Point|Number} point 节点的锚点或者节点X轴的锚点值.(如果 节点的锚点 作为参数,y不用填)
{Number} y Optional 节点Y轴的锚点值
关于cc.action说明:
cc.action是以下所有动作对象的基类,用node.runAction()调用
cc.rotateBy(duration, deltaAngleX, deltaAngleY)
duration以秒为单位,deltaAngleX以度为单位,deltaAngleY以度为单位
通过cc.Node对象的旋转属性,顺时针旋转一个角度的动作。 根据它的属性进行旋转。
cc.sequence(tempArray)顺序地执行动作。
// 使用动作创建序列
var seq = new cc.Sequence(act1, act2);
// 使用数组创建序列
var seq = new cc.Sequence(actArray);
cc.delayTime(dt)//dt时间以秒为单位
延时动作,延迟一个特定的时间后执行动作
cc.fadeOut(duration) //duration:以秒为单位
淡出一个对象(遵循cc.RGBAProtocol协议)。透明度从255变化到0。
cc.scaleTo(duration, sx, sy)//duration:以秒为单位 ; sx X轴缩放比例 ; sy Y轴缩放比例,如果为Null则和sx相等
通过修改cc.Node的scale属性,变换它的缩放比例。
cc.moveBy(1, cc.p(150, 0)),
{Number} durationduration以秒为单位 ;{cc.Point|Number} deltaPos ;{Number} deltaY Optional
通过修改一个CCNode对象的位置属性来移动x、y个像素;x和y是这个对象的相对位置。
//
延时调度
cc.node.scheduleOnce(callback_fn, delay)//调用 一个0s或者更大时长的延时,调度一个只运行一次的回调函数
{function} callback_fn 封装成的选择器的函数
{Number} delay 在执行之前,第一次运行需要等待的时间数.
cc.node.schedule(callback_fn, interval, repeat, delay) //调用 一个自定义的选择器.如果这个选择器已经被调度了,那么内部的参数将会被更新而不用再次调度一遍.
{function} callback_fn 封装成的选择器的函数
{Number} interval 运行时间间隔,以秒为单位.0表示每一帧运行一次.如果 interval = 0, 推荐使用scheduleUpdate()来代替.
{Number} repeat 选择器将会被执行(repeat + 1)次,你可以使用kCCRepeatForever来无限循环执行.
{Number} delay 在执行之前,第一次运行需要等待的时间.
cc.node.setActionManager(actionManager) //设置被所有动作使用的cc.ActionManager对象
{cc.ActionManager} actionManager 用来管理所有动作的CCActionManager对象.
cc.node.scheduleUpdate()//调用
调度器调度"update"方法.
它使用的序列号是0.该方法每帧调用一次.
拥有低顺序值的调度方法将会在有用高顺序值的方法之前被调用.
在每一个节点中,只有一个"update"方法能够被调度.
cc.node.scheduleUpdateWithPriority(priority)//调用
使用一个自定义优先级调度这个"update"方法 这个回调函数将会在每一帧被调用一次.
拥有低顺序值的调度方法将会在有用高顺序值的方法之前被调用.
在每一个节点中,只有一个"update"方法能够被调度(你不能够有2个"update"回调函数).
Parameters:
{Number} priority
cc.node.unscheduleUpdate()//调用
不调度"update"方法.
cc.node.update(dt)//定义
如果"scheduleUpdate"被调用且当节点活动(live)时,Update将会在每一帧自动调用.
默认的动作是调用节点的componentContainer的visit函数.
重写该函数从而实现你自己的更新方法.
Parameters:
{Number} dt//最近一次更新后的间隔时间(调用次数)
///
cc.node.addChild(child, localZOrder, tag)//"add" 逻辑必须仅使用该方法。如果子节点被添加到了一个"running(活动着的)"节点,那么'onEnter'和'onEnterTransitionDidFinish' 将会立即调用
Parameters:
{cc.Node} child 子节点
{Number} localZOrder Optional 绘制优先级中的Z顺序值.请参阅setZOrder(int).
{Number} tag Optional 便于标记节点的整数. 请参阅setTag(int).
/
场景切换效果,调用:cc.director.runScene(new cc.xxx(a1,a2,...))//xxx为方法名,a1,a2...为参数
cc.TransitionFade(t, scene, o)
{Number} t 持续时间(秒)
{cc.Scene} scene对象
{cc.TRANSITION_ORIENTATION_LEFT_OVER|
cc.TRANSITION_ORIENTATION_RIGHT_OVER|
cc.TRANSITION_ORIENTATION_UP_OVER|
cc.TRANSITION_ORIENTATION_DOWN_OVER} o//暂时不知道有什么用
///
关于OpenGL(EX)
/
关于纹理texture
cc.textureCache.addImage(res.xxxx);//cc.textureCache 是一个单例对象,它是 cc.Texture2D 的全局缓存
/
关于缓存资源:
动画:
var animFrames = [];
var str = "";
for (var i = 1; i < 35; i++) {
str = "explosion_" + (i < 10 ? ("0" + i) : i) + ".png";
/*
//cc.spriteFrameCache:一个处理精灵帧加载的单例,它将精灵帧保存在缓存中
{cc.SpriteFrame} getSpriteFrame(name)返回之前添加的那个精灵帧,
如果名称没有找到,那么将会返回nil
如果想使用这个精灵帧的话,应当重新retain一次
*/
var frame = cc.spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.04);//分别使用精灵帧、延续时长、循环次数(默认:1)来创建动画
cc.animationCache.addAnimation(animation, "Explosion");//用名字增加一个cc.Animation.
///
自带的一些工具类
cc.KEY(定义在CCCommon.js)//用于检测用户按了哪个键
/**
* Key map for keyboard event
*
* @constant
* @type {Object}
* @example
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyPressed: function(keyCode, event){
if (cc.KEY["a"] == keyCode) {
cc.log("A is pressed");
}
}
}, this);
*/
cc.KEY = {
none:0,
// android
back:6,
menu:18,
backspace:8,
tab:9,
enter:13,
shift:16, //should use shiftkey instead
ctrl:17, //should use ctrlkey
alt:18, //should use altkey
pause:19,
capslock:20,
escape:27,
space:32,
pageup:33,
pagedown:34,
end:35,
home:36,
left:37,
up:38,
right:39,
down:40,
select:41,
insert:45,
Delete:46,
0:48,
1:49,
2:50,
3:51,
4:52,
5:53,
6:54,
7:55,
8:56,
9:57,
a:65,
b:66,
c:67,
d:68,
e:69,
f:70,
g:71,
h:72,
i:73,
j:74,
k:75,
l:76,
m:77,
n:78,
o:79,
p:80,
q:81,
r:82,
s:83,
t:84,
u:85,
v:86,
w:87,
x:88,
y:89,
z:90,
num0:96,
num1:97,
num2:98,
num3:99,
num4:100,
num5:101,
num6:102,
num7:103,
num8:104,
num9:105,
'*':106,
'+':107,
'-':109,
'numdel':110,
'/':111,
f1:112, //f1-f12 dont work on ie
f2:113,
f3:114,
f4:115,
f5:116,
f6:117,
f7:118,
f8:119,
f9:120,
f10:121,
f11:122,
f12:123,
numlock:144,
scrolllock:145,
';':186,
semicolon:186,
equal:187,
'=':187,
',':188,
comma:188,
dash:189,
'.':190,
period:190,
forwardslash:191,
grave:192,
'[':219,
openbracket:219,
backslash:220,
']':221,
closebracket:221,
quote:222,
// gamepad controll
dpadLeft:1000,
dpadRight:1001,
dpadUp:1003,
dpadDown:1004,
dpadCenter:1005
};
event事件对象的方法(定义在cc.Event)
/**
* 返回从前一个位置到当前位置的距离增量
* @return {cc.Point}
*/
getDelta: function () {
return {x: this._x - this._prevX, y: this._y - this._prevY};
},
/
关于c.p()的一些操作(定义在CCPointExtension.js)
/**
* Calculates sum of two points.
* @param {cc.Point} v1
* @param {cc.Point} v2
* @return {cc.Point}
*/
//两点相加
cc.pAdd = function (v1, v2) {
return cc.p(v1.x + v2.x, v1.y + v2.y);
};
/**
* Clamp a point between from and to.
* @param {Point} p
* @param {Number} min_inclusive
* @param {Number} max_inclusive
* @return {cc.Point}
*/
//p点是否超出min_inclusive点或max_inclusive点,并返回结果
cc.pClamp = function (p, min_inclusive, max_inclusive) {
return cc.p(cc.clampf(p.x, min_inclusive.x, max_inclusive.x), cc.clampf(p.y, min_inclusive.y, max_inclusive.y));
};
var chunker=/
(
(?:
\( (?: \([^()]+\) | [^()]+ )+ \)
|\[ (?:\[ [ ^\[ \] ]*\] | ['"][^'"]*['"] | [^\[\]'"]+) +\]
|\\.
|[ ^>+~,(\[\\ ]+
)+
|[>+~]
)
(\s*,\s*)?
((?:.|\r|\n)*)
/g;cc.director:
cc.director 是管理游戏逻辑流程的单例类.由于它是一个单例,所以你不用调用任何构造方法或者create方法
cc.director 还负责以下内容:
- 初始化OpenGL上下文
- 设置OpenGL像素格式(默认为RGB565)
- 设置OpenGL缓冲深度(默认为1)
- 设置投影(默认为1,代表3D)
- 设置方向(默认为1,代表竖屏)
cc.director也设置默认OpenGL上下文:
- 激活GL_TEXTURE_2D
- 激活GL_VERTEX_ARRAY
- 激活GL_COLOR_ARRAY
- 激活GL_TEXTURE_COORD_ARRAY
cc.director还与显示的刷新速率同步时间.
特性和限制:
- 定时器时间和绘图要和显示的刷新率同步
- 只支持动画间隔为1/60,1/30,1/15
用于cc.director的监听事件
<static> <constant>
cc.Director.EVENT_AFTER_DRAW 绘制cc.Director后的事件
<static> <constant>
cc.Director.EVENT_AFTER_UPDATE
cc.Director更新后的事件
<static> <constant>
cc.Director.EVENT_AFTER_VISIT cc.Director访问后的事件
<static> <constant>
cc.Director.EVENT_PROJECTION_CHANGED cc.Director投影变化后的事件
<static> <constant>
cc.Director.PROJECTION_2D 2D投影常量(正交投影)
<static> <constant>
cc.Director.PROJECTION_3D 3D投影常量,fovy=60,znear=0.5f,zfar=1500
<static> <constant>
cc.Director.PROJECTION_CUSTOM 自定义投影常量,如果想设置cc.Director的投影,可调用投影代理的updateProjection方法
<static> <constant>
cc.Director.PROJECTION_DEFAULT cc.Director的默认投影常量,默认为3D投影
用法例子:
cc.eventManager.addCustomListener(cc.Director.EVENT_PROJECTION_CHANGED, function(event) {
cc.log("Projection changed.");
});
常用方法:
{cc.Size} getWinSize() 返回WebGL视图的点大小.它会考虑窗口任何形式的旋转(设备横竖方向)
{cc.Scene} getRunningScene() 返回当前正在运行的场景.导演类同一时间只能运行一个场景.
{cc.ActionManager} getActionManager() 返回导演类里的cc.ActionManager//cc.ActionManager是一个管理动作的类.
(待续。。)
cc.p(x,y) =>cc.Point(x, y)<-(但不要用)
cc.node.setAnchorPoint(point, y)//调用 设置锚点,用百分比表示.
{cc.Point|Number} point 节点的锚点或者节点X轴的锚点值.(如果 节点的锚点 作为参数,y不用填)
{Number} y Optional 节点Y轴的锚点值
关于cc.action说明:
cc.action是以下所有动作对象的基类,用node.runAction()调用
cc.rotateBy(duration, deltaAngleX, deltaAngleY)
duration以秒为单位,deltaAngleX以度为单位,deltaAngleY以度为单位
通过cc.Node对象的旋转属性,顺时针旋转一个角度的动作。 根据它的属性进行旋转。
cc.sequence(tempArray)顺序地执行动作。
// 使用动作创建序列
var seq = new cc.Sequence(act1, act2);
// 使用数组创建序列
var seq = new cc.Sequence(actArray);
cc.delayTime(dt)//dt时间以秒为单位
延时动作,延迟一个特定的时间后执行动作
cc.fadeOut(duration) //duration:以秒为单位
淡出一个对象(遵循cc.RGBAProtocol协议)。透明度从255变化到0。
cc.scaleTo(duration, sx, sy)//duration:以秒为单位 ; sx X轴缩放比例 ; sy Y轴缩放比例,如果为Null则和sx相等
通过修改cc.Node的scale属性,变换它的缩放比例。
cc.moveBy(1, cc.p(150, 0)),
{Number} durationduration以秒为单位 ;{cc.Point|Number} deltaPos ;{Number} deltaY Optional
通过修改一个CCNode对象的位置属性来移动x、y个像素;x和y是这个对象的相对位置。
//
延时调度
cc.node.scheduleOnce(callback_fn, delay)//调用 一个0s或者更大时长的延时,调度一个只运行一次的回调函数
{function} callback_fn 封装成的选择器的函数
{Number} delay 在执行之前,第一次运行需要等待的时间数.
cc.node.schedule(callback_fn, interval, repeat, delay) //调用 一个自定义的选择器.如果这个选择器已经被调度了,那么内部的参数将会被更新而不用再次调度一遍.
{function} callback_fn 封装成的选择器的函数
{Number} interval 运行时间间隔,以秒为单位.0表示每一帧运行一次.如果 interval = 0, 推荐使用scheduleUpdate()来代替.
{Number} repeat 选择器将会被执行(repeat + 1)次,你可以使用kCCRepeatForever来无限循环执行.
{Number} delay 在执行之前,第一次运行需要等待的时间.
cc.node.setActionManager(actionManager) //设置被所有动作使用的cc.ActionManager对象
{cc.ActionManager} actionManager 用来管理所有动作的CCActionManager对象.
cc.node.scheduleUpdate()//调用
调度器调度"update"方法.
它使用的序列号是0.该方法每帧调用一次.
拥有低顺序值的调度方法将会在有用高顺序值的方法之前被调用.
在每一个节点中,只有一个"update"方法能够被调度.
cc.node.scheduleUpdateWithPriority(priority)//调用
使用一个自定义优先级调度这个"update"方法 这个回调函数将会在每一帧被调用一次.
拥有低顺序值的调度方法将会在有用高顺序值的方法之前被调用.
在每一个节点中,只有一个"update"方法能够被调度(你不能够有2个"update"回调函数).
Parameters:
{Number} priority
cc.node.unscheduleUpdate()//调用
不调度"update"方法.
cc.node.update(dt)//定义
如果"scheduleUpdate"被调用且当节点活动(live)时,Update将会在每一帧自动调用.
默认的动作是调用节点的componentContainer的visit函数.
重写该函数从而实现你自己的更新方法.
Parameters:
{Number} dt//最近一次更新后的间隔时间(调用次数)
///
cc.node.addChild(child, localZOrder, tag)//"add" 逻辑必须仅使用该方法。如果子节点被添加到了一个"running(活动着的)"节点,那么'onEnter'和'onEnterTransitionDidFinish' 将会立即调用
Parameters:
{cc.Node} child 子节点
{Number} localZOrder Optional 绘制优先级中的Z顺序值.请参阅setZOrder(int).
{Number} tag Optional 便于标记节点的整数. 请参阅setTag(int).
/
场景切换效果,调用:cc.director.runScene(new cc.xxx(a1,a2,...))//xxx为方法名,a1,a2...为参数
cc.TransitionFade(t, scene, o)
{Number} t 持续时间(秒)
{cc.Scene} scene对象
{cc.TRANSITION_ORIENTATION_LEFT_OVER|
cc.TRANSITION_ORIENTATION_RIGHT_OVER|
cc.TRANSITION_ORIENTATION_UP_OVER|
cc.TRANSITION_ORIENTATION_DOWN_OVER} o//暂时不知道有什么用
///
关于OpenGL(EX)
/
关于纹理texture
cc.textureCache.addImage(res.xxxx);//cc.textureCache 是一个单例对象,它是 cc.Texture2D 的全局缓存
/
关于缓存资源:
动画:
var animFrames = [];
var str = "";
for (var i = 1; i < 35; i++) {
str = "explosion_" + (i < 10 ? ("0" + i) : i) + ".png";
/*
//cc.spriteFrameCache:一个处理精灵帧加载的单例,它将精灵帧保存在缓存中
{cc.SpriteFrame} getSpriteFrame(name)返回之前添加的那个精灵帧,
如果名称没有找到,那么将会返回nil
如果想使用这个精灵帧的话,应当重新retain一次
*/
var frame = cc.spriteFrameCache.getSpriteFrame(str);
animFrames.push(frame);
}
var animation = new cc.Animation(animFrames, 0.04);//分别使用精灵帧、延续时长、循环次数(默认:1)来创建动画
cc.animationCache.addAnimation(animation, "Explosion");//用名字增加一个cc.Animation.
///
自带的一些工具类
cc.KEY(定义在CCCommon.js)//用于检测用户按了哪个键
/**
* Key map for keyboard event
*
* @constant
* @type {Object}
* @example
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyPressed: function(keyCode, event){
if (cc.KEY["a"] == keyCode) {
cc.log("A is pressed");
}
}
}, this);
*/
cc.KEY = {
none:0,
// android
back:6,
menu:18,
backspace:8,
tab:9,
enter:13,
shift:16, //should use shiftkey instead
ctrl:17, //should use ctrlkey
alt:18, //should use altkey
pause:19,
capslock:20,
escape:27,
space:32,
pageup:33,
pagedown:34,
end:35,
home:36,
left:37,
up:38,
right:39,
down:40,
select:41,
insert:45,
Delete:46,
0:48,
1:49,
2:50,
3:51,
4:52,
5:53,
6:54,
7:55,
8:56,
9:57,
a:65,
b:66,
c:67,
d:68,
e:69,
f:70,
g:71,
h:72,
i:73,
j:74,
k:75,
l:76,
m:77,
n:78,
o:79,
p:80,
q:81,
r:82,
s:83,
t:84,
u:85,
v:86,
w:87,
x:88,
y:89,
z:90,
num0:96,
num1:97,
num2:98,
num3:99,
num4:100,
num5:101,
num6:102,
num7:103,
num8:104,
num9:105,
'*':106,
'+':107,
'-':109,
'numdel':110,
'/':111,
f1:112, //f1-f12 dont work on ie
f2:113,
f3:114,
f4:115,
f5:116,
f6:117,
f7:118,
f8:119,
f9:120,
f10:121,
f11:122,
f12:123,
numlock:144,
scrolllock:145,
';':186,
semicolon:186,
equal:187,
'=':187,
',':188,
comma:188,
dash:189,
'.':190,
period:190,
forwardslash:191,
grave:192,
'[':219,
openbracket:219,
backslash:220,
']':221,
closebracket:221,
quote:222,
// gamepad controll
dpadLeft:1000,
dpadRight:1001,
dpadUp:1003,
dpadDown:1004,
dpadCenter:1005
};
event事件对象的方法(定义在cc.Event)
/**
* 返回从前一个位置到当前位置的距离增量
* @return {cc.Point}
*/
getDelta: function () {
return {x: this._x - this._prevX, y: this._y - this._prevY};
},
/
关于c.p()的一些操作(定义在CCPointExtension.js)
/**
* Calculates sum of two points.
* @param {cc.Point} v1
* @param {cc.Point} v2
* @return {cc.Point}
*/
//两点相加
cc.pAdd = function (v1, v2) {
return cc.p(v1.x + v2.x, v1.y + v2.y);
};
/**
* Clamp a point between from and to.
* @param {Point} p
* @param {Number} min_inclusive
* @param {Number} max_inclusive
* @return {cc.Point}
*/
//p点是否超出min_inclusive点或max_inclusive点,并返回结果
cc.pClamp = function (p, min_inclusive, max_inclusive) {
return cc.p(cc.clampf(p.x, min_inclusive.x, max_inclusive.x), cc.clampf(p.y, min_inclusive.y, max_inclusive.y));
};