Cocos2d-html5常用API

前言:
非常庞大的体系,目前我只想从官方提供的引擎功能测试的例子进行切入点,将里面涉及到的基础知识优先做研究,起码要持续积累两到三个月才能有所领悟,在积累中.....

参考文档:
以cocos-html5(version2.2.1)的API文档为依据

一些约定:
1.实例的引用,新的实例交由cc._xxx变量存储,并在类的内部使用的
为了能让外部能使用,并统一接口,都会给类定义一个getInstance方法
并将对应的实例返回出去的。
cc.Application的实例
eg:cc.Application.getInstance(),当然在执行之前要先创建cc.Application实例

2.另外一些cocos层面的全局变量,作者都将其纳入到cc的命名空间下了。 防止冲突。
而我们就不要再使用cc作为自己的变量。

一、常量
cc.IS_SHOW_DEBUG_ON_PAGE
类型:boolean
默认值:false
位置:CCCommon.js
(静态、常量)
功能:是否在网页上显示调试信息

二、cc命名空间下的方法 
1.cc.log
功能:输出调试信息
依赖:cc.IS_SHOW_DEBUG_ON_PAGE
位置:CCCommon.js
默认:在控制台输出调试信息
描述:cc.IS_SHOW_DEBUG_ON_PAGE为true时,在网页上显示调试信息
cc.IS_SHOW_DEBUG_ON_PAGE为false时,在控制台输出调试信息

2.cc.Assert
功能:输出断言信息
依赖:cc.IS_SHOW_DEBUG_ON_PAGE
位置:CCCommon.js
参数:cond 条件,true、false或者条件表达式
message 当cond为false时,输出该信息到控制台,当不支持console.assert时,用alert方式替代
描述:只有当cc.COCOS2D_DEBUG为0时才会被屏蔽,当然还要调用cc.initDebugSetting方法

3. cc.initDebugSetting
功能:更新调试模式
依赖:cc.COCOS2D_DEBUG(大于等于0的数)
位置:CCCommon.js
描述:当cc.COCOS2D_DEBUG = 0时,cc.log, cc.Assert, cc.logINFO, cc.logERROR 被屏蔽
当cc.COCOS2D_DEBUG = 1时,cc.logINFO被赋值为cc.log, cc.logERROR 被屏蔽
当cc.COCOS2D_DEBUG > 1时,cc.logINFO, cc.logERROR 均被赋值为cc.log

4. cc.setup(el, width, height)
功能:设置canvas的尺寸
参数:el:可以是dom元素,也可以是dom元素的id
width:canvas元素的宽度
height:canvas元素的高度
约束:el的标签必须采用DIV或者CANVAS
描述:做了哪些事
el为canvas时:
1. 宽度以参数传入的为准,假如没传宽高,则以元素自身的宽高为准,假如
自身没设置width、height样式时,cocos默认设置为480px宽,320px高,设置在属性中的。
2. 在canvas的上一层再包裹一层div元素,尺寸与canvas一致(设置在内联style)
,并做居中处理
3. 将canvas对象赋值给cc.canvas
el为div标签时:
1. 创建一个canvas标签,用属性方式设置宽高,添加“gameCanvas”class
2. 为div做居中处理,并用style内联方式设置宽高
3. 将canvas对象赋值给cc.canvas
最后:
1.当支持visibilitychange事件(选项卡显示隐藏状态变更)时,每当选项卡显示时,
cc.Director.getInstance()._resetLastUpdate();
2.手机平台,将div、canvas、body设置为不可选中的状态,对iphone、ipad禁用选状态下背景默认高亮的效果。
在pc端是可以选中的。
疑惑:
1.不知道为什么canvas的尺寸设置于属性,而包裹层div的尺寸却设置于内联样式中,为什么风格
不统一一点?
2.当el为div标签时,canvas有“gameCanvas”class,而el为canvas时,却没有为canvas添加该class的。


5.cc.Color3B
功能:创建一种颜色,颜色由rgb三种元色构成。是一个构造函数。
参数:r1,g1,b1,分别代表rgb,取值在[0,255]
位置:CCTypes.js
默认:是参数缺失情况下,r,g,b成员变量赋值为0
描述:没有传任何参数时,rgb均为0
传入一个参数时,如果是cc.Color3B实例时,会返回该实例的拷贝
传入三个参数时,分别赋值给成员变量r,g,b,并去除小数部分的。

6.cc.Color4B
功能:创建一种颜色,颜色由rgba三种元色构成。是一个构造函数。
参数:r1,g1,b1,分别代表rgb,a表示透明度,取值在[0,255]
位置:CCTypes.js
默认:是参数缺失情况下,r,g,b,a成员变量赋值为0
描述:没有传任何参数时,rgb均为0
传入一个参数时,如果是cc.Color3B实例时,会返回该实例的拷贝
传入三个参数时,分别赋值给成员变量r,g,b,并去除小数部分的。
注意:在我们获取颜色值时,通常是#3c3c3c这种类型的颜色值,这些值是16进制的
,我们可以用0x3c来作为参数,是一种快速转换成数值的方式。

7.cc.RenderDoesnotSupport 
功能: 返回cc.__renderDoesnotSupport内置变量
位置: miniFramework.js
描述: 万一当
cc.__renderDoesnotSupport为undefined时,返回false

8.cc.create3DContext
功能:创建一个webgl环境

位置: miniFramework.js 
返回:一个webgl的环境,创建失败就返回null
参数:canvas:canvas元素
opt_attribs:创建webgl的一些参数。
位置:miniFramework.js
描述:cocos在检测是否支持webgl的时候,opt_attribs参数设置为
{'stencil': true, 'preserveDrawingBuffer': true },
stencil: 是绘图缓存的一种,表示至少用8位来保存。
它为屏幕上的每个像素点保存一个无符号的正数值。通过这个值,可以的得知哪些像素点的颜色值
需要更新,哪些不需要,从而达到增加渲染管线的渲染速度的。
preserveDrawingBuffer:缓存种类Color(颜色缓冲区),Depth(深度缓冲区),Stencil(模版缓存区),
当设置为true时,表示会缓存绘图信息,除非canvas尺寸发生变化。
当设置为false时,表示每次渲染后都会去清缓存,不管canvas尺寸是否发生变化。
注意:
* DrawingBuffer绘图缓存在3种情况下是必须被系统自动清空的:
1.首次创建的时候
2.当canvas的尺寸发生变化时
3.当创建webgl的preserveDrawingBuffer配置参数为false时,每当渲染结束后都会清空缓存
* Color(颜色缓冲区),Depth(深度缓冲区)默认值都是true的,而Stencil(模版缓存区)默认值为false。

9.cc.Point
功能:构造函数,创建一个点,包括x,y两个平面坐标
参数:x,y
位置:CCGeometry.js
描述:当没有传入参数时,初始值为x = 0,y=0

注意:cc.PointMake即将会被废弃,官方建议不要使用,起作用跟cc.Point作用一致。

10.{cc.Point} cc.p
功能:返回cc.Point实例
参数:x,y
位置:CCGeometry.js(Geometry:几何)
描述:用cc.Point 新建一个实例然后返回而已,方便我们创建点对象,省去我们写new 关键字,
说白就是简化书写,偷懒。

11.{cc.Point} cc.PointZero
功能:返回(0,0)点实例
位置:CCGeometry.js

12.{Boolean} cc.pointEqualToPoint
功能:返回两个cc.Point实例是否指向同一个点
参数:point1,point2 (类型为cc.Point)
位置:CCGeometry.js
注意:一旦传入0,false,undefined,null,或者没有传入参数,该方法均
返回false,也许是cocos作者认为这些值没意义,不具备可比性,一律返回fasle

13.{cc.Size} cc.Size
功能:构造函数,创建一个尺寸实例,包含width宽度,height高度
参数:width,height
位置:CCGeometry.js
描述:假如没传width,height参数进去,会给定默认值0,0

注意:cc.SizeMake即将会被废弃,官方建议不要使用,起作用跟cc.Size作用一致。

14.{cc.Size} cc.SizeZero
功能:返回一个宽高都为0的尺寸实例
参数:N/A
位置:CCGeometry.js

15.{Boolean} cc.sizeEqualToSize
功能:返回两个cc.Size实例是否相同(width,height变量相等)
参数:size1,size2 (类型为cc.Size)
位置:CCGeometry.js
注意:一旦传入0,false,undefined,null,或者没有传入参数,该方法均
返回false。

16.{cc.Rect} cc.Rect
功能:构造函数,具有两个成员参数
{cc.Point} origin: origin.x, origin.y
{cc.Size} size: size.width,size.height
参数:x1,y1,width1,height1
位置:CCGeometry.js
描述:这个方法采用模拟了方法的重载
当没有传入参数:origin赋值为横纵坐标为0的cc.Point实例,size赋值为高度为0的cc.Size实例
当传入一个参数:认定这个参数的类型就是cc.Rect
当传入二个参数:认定第一个参数为cc.Point类型,第二个参数为cc.Size类型
当传入四个参数:将参数分别赋值给origin.x, origin.y, size.width, size.height
注意:
* 我觉得它根据了arguments.length,按传入参数个数来做不同处理,对于模拟方法重载
的层面来讲,个人觉得是好赞的做法!
* cc.RectMake即将会被废弃,官方建议不要使用,起作用跟cc.Rect作用一致。
* 在这里不要以为它就只有这个成员变量,它还有四个对应的类成员属性,分别
为x,y,width,height,以Object.defineProperties(cc.Rect.prototype,这样的方式定义的。

17.{cc.Rect} cc.rect
参数:x1,y1,width1,height1
位置:CCGeometry.js
描述:用cc.Rect 新建一个实例然后返回而已,方便我们创建矩形对象,省去我们写new 关键字,
说白就是简化书写,偷懒。

18.{cc.Rect} cc.RectZero
功能:返回一个以(0,0)作为原点,宽度高度均为0的矩形对象

19.{Boolean} cc.rectEqualToRect
功能:比较两个矩形实例是否相等
参数:rect1, rect2 均为{cc.Rect}类型
描述:一旦传入0,false,undefined,null,或者没有传入参数,该方法均
返回false。

20.{Boolean} cc.rectContainsRect
功能:返回一个矩形是否包含另一个矩形
true:第一个矩形包含第二个矩形,且第一个矩形的尺寸较大
false:第一个矩形没有包含第二个矩形,或者跟第二个矩形相同
参数:rect1, rect2 均为{cc.Rect}类型
描述:一旦传入0,false,undefined,null,或者没有传入参数,该方法均
返回false。
注意:这里当两个矩形相同,会返回false。

21.{Number} cc.rectGetMaxX
功能:返回矩形右下角点的x坐标

22.{Number} cc.rectGetMidX
功能:返回矩形底边中点的x坐标

23.{Number} cc.rectGetMinX
功能:返回矩形左下角点的x坐标

24.{Number} cc.rectGetMaxY
功能:返回矩形左上角点y坐标

25.{Number} cc.rectGetMidY
功能:返回矩形左边中点y坐标

26.{Number} cc.rectGetMinY
功能:返回矩形左下角点y坐标

27.{Boolean} cc.rectContainsPoint
功能:判断点是否在矩形上
参数:{cc.Rect} rect, {cc.Point} point

28.{Boolean} cc.rectIntersectsRect
功能:判断两个矩形是否存在交集
参数:{cc.Rect} rectA, {cc.Point} rectB

29.{Boolean} cc.rectOverlapsRect
功能:判断两个矩形是否存在交集
参数:{cc.Rect} rectA, {cc.Point} rectB
质疑:这两个函数在功能上与cc.rectIntersectsRect完全一致,不知道cocos作者为什么
要搞两个功能一样的方法出来。


30.{cc.Rect} cc.rectUnion
功能:返回一个包含这两个矩形的最小矩形
参数:{cc.Rect} rectA, {cc.Point} rectB

31.{cc.Rect} cc.rectIntersection
功能:获取两个矩形重合部分的矩形
参数:{cc.Rect} rectA, {cc.Point} rectB

32.cc.setContextMenuEnable
功能:设置canvas元素上点击鼠标右键是否弹出菜单列表
参数:true:弹出菜单
false:不弹出菜单(默认值)
位置:CCApplication.js

(33-46为仿射矩阵相关操作) 
33.AffineTransform
功能:构造函数,定义a,b,c,d,tx,ty成员变量
返回:{cc.AffineTransform}
描述:以上变量构成一个坐标矩阵
参数:a,b,c,d,tx,ty

34.__AffineTransformMake
功能:返回包含a,b,c,d,tx,ty属性的jason对象
返回:{object}

35.__PointApplyAffineTransform
功能:计算指定点point通过变换矩阵t后得到的目标坐标值
返回:{object}
参数:{cc.Point} point , {objct} t(变换矩阵)
描述:[a, b ] * [point.x,point.y] 计算得出坐标值的。
c, d
tx,ty
遵循f(x) = a*x + b,
[a*pint.x + c*point.y + tx,b*point.x + d*point.y + ty]
36.PointApplyAffineTransform
功能:计算指定点point通过变换矩阵t后得到的目标坐标值
返回:{object}
参数:{cc.Point} point , {objct} t
描述:功能跟__PointApplyAffineTransform一样,只不过这个方法对外作为
构造器角色。

37._PointApplyAffineTransform
功能:计算指定点point通过变换矩阵t后得到的目标坐标值
返回:{object}
参数:{Number} x , {Number} y, {objct} t
描述:功能跟__PointApplyAffineTransform一样。只是参数{cc.Point} point
拆分成x,y。x为point.x,y为point.y。

38.__SizeApplyAffineTransform
功能:计算指定点point通过变换矩阵t后得到的目标坐标值
返回:{object}
参数:{cc.Size} size , {objct} t
描述:[a, b ] * [size.widht,size.height] 计算得出目标尺寸。
c, d
tx,ty
由于面积不需要叠加位移,所以不用遵循f(x) = a*x + b,只要f(x) = a*x就ok。
[a*size.widht + c*size.height,b*size.widht + d*size.height]

39.AffineTransformMakeIdentity
功能:返回一个变换矩阵,这个矩阵不包含任何变化。
描述:任何点或尺寸与该方法返回的矩阵进行乘法运算,都不会对原始点或尺寸对象
产生任何变化。
返回:{object}
{a: 1.0, b: 0.0, c: 0.0, d: 1.0, tx: 0.0, ty: 0.0}

40.AffineTransformIdentity
功能:返回一个变换矩阵,这个矩阵不包含任何变化。
描述:任何点或尺寸与该方法返回的矩阵进行乘法运算,都不会对原始点或尺寸对象
产生任何变化。
返回:{object}
质疑:功能跟cc.AffineTransformMakeIdentity一样,都用作构造器,不知道为什么要
搞两个方法出来。


41.RectApplyAffineTransform
功能:获取一个经过变换矩阵变形后的矩形。
返回:{cc.Rect} rect, {cc.AffineTransform} anAffineTransform
描述:其原理是通过获取四个顶点坐标,计算每个点通过变换矩阵t后得到的目标坐标值,
再从四个变换后的顶点求出该矩形的圆点和尺寸。根据这些属性新创建一个矩形
对象并返回该对象。
质疑:var top = cc.rectGetMinY(rect);应该改为var bottm = cc.rectGetMinY(rect);
var bottom = cc.rectGetMaxY(rect);应该改为var top = cc.rectGetMaxY(rect);
语义上会更好。


42._RectApplyAffineTransformIn
功能:获取一个经过变换矩阵变形后的矩形。
返回:{cc.Rect} rect, {cc.AffineTransform} anAffineTransform
描述:功能与RectApplyAffineTransform一样,但_RectApplyAffineTransformIn将变换后的
矩形属性拷贝到rect参数,并返回该参数。
质疑:var top = cc.rectGetMinY(rect);应该改为var bottm = cc.rectGetMinY(rect);
var bottom = cc.rectGetMaxY(rect);应该改为var top = cc.rectGetMaxY(rect);
语义上会更好。


43.AffineTransformTranslate
功能:仿射矩阵的平移操作后的结果。
返回:{cc.AffineTransform} t,{Number} tx,{Number} ty
描述:仿射矩阵的结合顺序一般最后才做平移操作。
[t.a, t.b ] * [tx,ty] => [tx*t.a+ ty*t.c, tx*t.b + ty*t.d]
t.c, t.d
[t.a, t.b ] + [tx*t.a+ ty*t.c, tx*t.b + ty*t.d] =>[t.a,t.b]
t.c, t.d t.c,t.d
t.tx,t.ty tx*t.a+ ty*t.c + tx, tx*t.b + ty*t.d + ty

注意:这里是先做乘法操作,得出的结果是平移操作的变换矩阵,也就是说tx,ty是未经历任何转换的平移量,
但要融合到t,先要做一下矩阵乘法操作,然后才能与t的直接相加操作得到组合后的变换矩阵。

44.AffineTransformScale
功能:仿射矩阵的缩放操作后的结果。
返回:{cc.AffineTransform}
描述:仿射矩阵的与缩放操作组合后的结果。
[t.a, t.b ] + [sx,0] =>[t.a*sx,t.b*sx]
t.c, t.d 0,sy t.c*sy,t.d*sy
t.tx,t.ty t.tx, t.ty

45.AffineTransformConcat
功能:仿射矩阵的缩放操作后的结果。
返回:{cc.AffineTransform}
参数:{cc.AffineTransform} t1, {cc.AffineTransform} t2
描述:两个仿射矩阵组合后的结果,非平移的都是采用乘法操作。
[t1.a,t1.b] * [t2.a,t2.b]
t1.c,t1.d t2.c,t2.d
t1.tx,t1.ty t2.tx,t2.ty
=>[t1.a*t2.a+t1.b*t2.c, t1.a*t2.b+t1.b*t2.d]
t1.c*t2.a+t1.d*t2.c, t1.c*t2.b+t1.d*t2.d
t1.tx*t2.a+ t1.ty*t2.c + t2.tx, t1.tx*t2.b + t1.ty*t2.d + t2.ty

a,b,c,d都是通过矩阵乘法算来的,后面的tx,ty要做两步才能得出结果,
第一:先算出[t1.tx,t1.ty]在[t2.a,t2.b]变换矩阵变换后的平移量,按照乘法得到
t2.c,t2.d
[t1.tx*t2.a+ t1.ty*t2.c, t1.tx*t2.b + t1.ty*t2.d]
第二:知道变换后的平移量就可以直接与[t2.tx,t2.ty]相加得出结果。
这两步做了AffineTransformTranslate方法做的事了。

46.AffineTransformEqualToTransform
功能:判断两个矩阵是否相等。
返回:true/false
参数:{cc.AffineTransform} t1, {cc.AffineTransform} t2
描述:判断它们的a,b,c,d,tx,ty属性是否相等

47.ArrayRemoveObject
功能:从数组中移除指定对象
参数:{Array} arr
{*} var
描述:arr数组元素类型决定了var的类型


三、cc属性
1.{String} cc.ENGINE_VERSION
功能:返回当前正在使用的cocos-html5的引擎版本
位置:CCConfig.js
eg:“Cocos2d-html5-v2.2.1”


2.{c.Point} cc.POINT_ZERO
位置:CCGeometry.js
返回(0,0)点实例,该实例包含x,y两个成员变量

3.{c.Size} cc.SIZE_ZERO
位置:CCGeometry.js
返回(0,0)尺寸实例,该实例包含width,height两个成员变量

4.{c.Point} cc.SIZE_ZERO
位置:CCGeometry.js
返回:左下角点(0,0)作为原点,宽,高长度均为0的矩形实例,
该实例包含x,y,width,height均为0的四个成员变量

5.cc._sharedApplication
功能:指向cc.Application创建的实例
描述:在cc.Application构造器中,初始化时,将实例指针this赋值给cc._sharedApplication
,所以完全等价于当做是cc.Application实例。
注意:用意为cocos其他类或者方法使用之,主要用于引擎内其他方法使用,外部用cc.Application.
getInstance()来获取
位置:CCApplication.js 

四、sys命名空间 

位置:cocos2d/core/platform/Sys.js
描述:在cocos2d-html这个分支中,Sys只有属性,没有方法。
属性:
1.platform
返回:“browser”
只读,可枚举,可配置(enumerable、configurable)

2.version
返回:cc.ENGINE_VERSION
只读,可枚举,可配置(enumerable、configurable)
如在v2.2.1的话,返回“Cocos2d-html5-v2.2.1”

3.os
返回设备操作系统类型的名称
只读,可枚举,可配置(enumerable、configurable)
* 'Windows'(WP7会被断言为Windows的)
* 'OS X'
* 'UNIX'
* 'Linux'
* 'iOS'
* 'Android'

4.capabilities
返回JSON对象
{
canvas: true
opengl:
touches:
mouse:
keyboard:
accelerometer:
}
只读,可枚举,可配置(enumerable、configurable)

5.localStorage
返回window.localStorage对象,假如不支持本地存储时,将返回一个空函数function(){}.
质疑:这里cocos的写法有一些低级错误,我要指出,源码如下:
try{
sys.localStorage = window.localStorage;
}catch(e){
if( e.name === "SECURITY_ERR" ) {
cc.log("Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option");
}
sys.localStorage = function(){};
}

这里做了一个try..catch捕获异常,目的是应付用户对Chrome浏览器的Cookie栏目勾选了阻止网站设置任何数据,但是在这种情况下 cc.log并没有将错误信息打印出来,因为在最新版的Chrome中,e.name显示为”SecurityError“了,没有下划线的。所以源码存在一点
问题的。


五、cc.Browser
cc.Browser
位置: miniFramework.js
属性
1.ua: userAgent(小写)

2.platform: navigator.platform(小写),eg:"Win32"

3.isMobile: 是否移动设备,根据ua是否含有'mobile'和'android'字样。
质疑:从判断逻辑来睇,并不只是判断Mobile,因为iPad平台都有'mobile'字样,Android平台的平板
也是必定有'android',所以isMobile我认为是断言是否移动设备,而不是字面上的手机设备


4.mode: 如果为ie浏览器,则返回document.documentMode,获知ie处于哪种内核模式
IE6/IE7:undefined
IE8: 8
IE8(兼容模式):7
IE9: 9
IE9(兼容模式):7||8
IE10: 10
IE10(兼容模式):7||8||9

5.supportWebGL
false: 当document.ccConfig.renderMode为1时
或者 document.ccConfig.renderMode为0时的移动设备
true: 必须先支持WebGL,
pc: renderMode为0或2
移动设备: renderMode 为2
质疑: 当我们指定document.ccConfig.renderMode为2时,也即只选用WebGL渲染页面,在最新版的Chrome中测试出现了
相当多的关于WebGL的警告错误,多的程度已经让Chrome报如下的错误:

too many errors, no more errors will be reported to the console for this context.
最终导致不能正常显示cocos2d-html5引擎的功能测试的。唯一能解决目前的方案是将
document.ccConfig.renderMode设为1,
也即强制只采用canvas来渲染。


6.{Boolean} __renderDoesnotSupport:
true: 当document.ccConfig.renderMode强制用WebGL来渲染,但浏览器不支持WebGL,表示不支持渲染。
false: 表示支持渲染,由cc.RenderDoesnotSupport 方法设置。
注意:
* 即使返回false时,也不表示肯定没问题的,如
supportWebGL中,提到的质疑部分。
* 在tests-boot-html5.js里面我们为document.ccConfig赋值,假如没赋值,将其赋值为{}
* document.ccConfig.renderMode = 2表示只选择WebGL方式来渲染
* document.ccConfig.renderMode = 1表示只选择canvas方式来渲染
* 移动设备默认就是只采用canvas进行渲染的

7.{Boolean} supportWebAudio
true: 表示支持html5的音频处理接口(对应html标签为

类的方法

1.create

功能:创建一个cc.Speed实例

参数:N/A

返回值类型:{cc.Speed}

普通方法

1.setSpeed

功能:设置速度

参数:{Number} speed

描述:这里speed的用法,主要控制速度的,

1 -> 速度不变

>1 -> 提速

<1 -> 减速

2.getSpeed

功能:获取速度

返回值类型:{Number}

3.clone

功能:返回自身的一个拷贝副本

返回值类型:{cc.Speed}

描述:这个副本将会拥有与自身一样的速度(_speed),但是自身的内建动作对象(_innerAction)

与副本的_innerAction并不完全等价,只是它们在动作的持续时间_duration属性是相同的。

4.initWithAction

功能:初始化动作对象

参数:{cc.ActionInterval} action

{Number} speed

描述:1.将action设置为内建动作对象(_innerAction)

2.speed设置为该实例的_speed属性值。

注意:初始化成功后会返回true,但action为空时,cocos抛出异常

5.ctor

功能:初始化函数

参数:N/A

描述: 1.设置_speed为0

2.设置_innerAction为null

3.执行cc.Action的初始化函数

6.startWithTarget

功能:将动作对象挂载在节点上

调用时机:动作开始之前的那一刻

参数:{cc.Node} target

描述:1.将自身(动作)的节点(主语)设置为target

2.内建动作对象的节点(主语)设置为target

3.内建动作对象的_elapsed(动作已执行时间)初始化为0

4.内建动作对象的_firstTick(动作是否首次被激活)设置为true

7.isDone

功能:获取动作是否已经结束

参数:N/A

返回:{Boolean}

描述:通过调用内建动作对象(_innerAction)的同名方法,

其实现依据为 动作当前已执行的时间 >= 动作的持续总时间.

8.getInnerAction

功能:获取内建动作对象

参数:N/A

返回值类型:{cc.ActionInterval}

9.setInnerAction

功能:设置内建动作对象

参数:{cc.ActionInterval} action

10.stop

功能:停止动作

参数:N/A

描述:将自身和内建动作对象(_innerAction)的目标节点都设置为null

11.step

功能:停止动作

参数:{Number} dt 单位为秒

描述:内建动作对象(_innerAction)执行同名方法。

调整速度的原理:

1.首先step的调用的时间间隔是固定的

2.通过dt*this._speed/this._duration的得出每一帧占动作总进程的比例,也就是说在经过相同的时间,而动作的进程比例增大,则意味著提速,反之,减速。

所以推导出this._speed>1为提速,this._speed<1为减速。

你可能感兴趣的:(转载类)