一些Coco2d-js笔记

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));
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值