目录
- 主要包含 url.js utils.js requiring-frame.js attribute.js CCMacro.js CCSys.js CCScreen.js CCVisibleRect.js callbacks-invoker.js
- url.js
- utils.js
- requiring-frame.js
- attribute.js
- CCMacro.js
- CCSys.js
- CCScreen.js
- CCVisibleRect.js
- callbacks-invoker.js
主要包含 url.js utils.js requiring-frame.js attribute.js CCMacro.js CCSys.js CCScreen.js CCVisibleRect.js callbacks-invoker.js
url.js
normalize (url)
删除 url前面的 './' 或者 '/'raw (url)
返回 一个 'resources/' 开头的路径
utils.js
contains (refNode, otherNode)
主要分为两种情况:
case1: dom下的Node
case2: cocos里面的Node
cocos下的 Node 包含,主要是判断 otherNode 是否是 refNode的子节点.isDomNode
判断是否是 dom 下的 NodecallInNextTick(callback, p1, p2)
下一次 tick 的时候 调用 callback
requiring-frame.js
cc._RF 类似栈. 包含 push pop peek 方法.
TODO 作用是什么???
attribute.js
createAttrsSingle (owner, ownerCtor, superAttrs)
给 owner 添加 attrs 属性, 属性值为一个 继承自 superAttrs.constructor 的对象实例.createAttrs (subclass)
前提要求 subclass 本身不包含 attrs 属性.
会检查 subclass 的整个原型链,如果某个原型链上的对象不包含 attrs 属性,则会根据父对象,添加上 attrs 属性.
最后 给 subclass 添加上 attrs 属性. 然后返回 subclass.__attrs__.attr (ctor, propName, newAttrs)
case1: 如果 newAttrs 为 undefined,则会返回 ctor属性中的 attrs 组成的对象. 相当于 get
case2: 如果 newAttrs 是对象,则会 将 newAttrs 里面的key value,复制到 ctor.__attrs__.prototype 中. 相当于 setgetClassAttrs (ctor)
如果 ctor 包含 attrs 属性,则直接返回此属性,否则就为ctor创建 attrs 属性getClassAttrsProto (ctor)
返回 ctor.__attrs__.prototypesetClassAttr (ctor, propName, key, value)
给 ctor.__attrs__.prototype 设置 key,value. 其中key为 propName + DELIMETER + keygetTypeChecker (type, attrName)
TODO 返回一个检查 function (constructor, mainPropName){} 函数. 用于类型检查??ObjectType (typeCtor)
TODO 返回一个对象,对象中包含 一个检查 ValueType 类型的函数.
CCMacro.js
cc.macro 里面定义了一些 预定义的常量和一些 引擎的设置选项.
cc.macro.KEY 里面定义了按键对应的值
cc.macro.ImageFormat 定义了支持的图片格式
cc.macro.BlendFactor 定义了混合因子
可参考: https://www.andersriggelsen.dk/glblendfunc.php
cc.macro.TextAlignment 定义了水平对齐
cc.macro.VerticalTextAlignment 定义了垂直对齐
CCSys.js
里面 主要是做了一些运行环境的判断和一些功能的支持.
如果需要查看当前环境的功能支持情况,可以调用 sys.dump() 方法打印出来.
比如获取当前设备的网络类型:
// 获取当前设备的网络类型, 如果网络类型无法获取,默认将返回 cc.sys.NetworkType.LAN
sys.getNetworkType();
CCScreen.js
It's invalid on safari, QQbrowser and android browser
里面主要包含了 全屏设置的 api. 但是在 safari QQbrowser android browser 下无效.
fullScreen()
返回当前是否是全屏状态.requestFullScreen(element, onFullScreenChange)
请求全屏模式exitFullScreen(element)
退出全屏模式autoFullScreen (element, onFullScreenChange)
自动进入全屏模式.
CCVisibleRect.js
定义了 cc.visibleRect 对象. 里面包含一些常用位置的定义.
如:
topLeft:cc.v2(0,0),
topRight:cc.v2(0,0),
top:cc.v2(0,0),
bottomLeft:cc.v2(0,0),
bottomRight:cc.v2(0,0),
bottom:cc.v2(0,0),
center:cc.v2(0,0),
left:cc.v2(0,0),
right:cc.v2(0,0),
width:0,
height:0,
callbacks-invoker.js
a. CallbackList
function CallbackList () {
this.callbacks = [];
this.targets = []; // same length with callbacks, nullable
this.isInvoking = false; // 是否处于调用中
this.containCanceled = false; // 相当于 callbacks/targets 中是否包含 null
}
下面的方法都是基本方法,不会使用到 this.isInvoking 变量.
主要包含的方法:
- removeBy (array, value)
删除 array中 所有元素值为 value 的元素.
例如:
this.removeBy(this.callbacks , null);
会删除 this.callbacks 中,所有的 null.
cancel (index)
取消 索引为 index 的回调.cancelAll()
取消所有的回调purgeCanceled()
删除所有为null的回调
b. CallbacksHandler
包含一组 (key:CallbackList) 这样的一个对象.
此对象包含一组方法,对 (key:CallbackList) 进行操作.
如:
add(key, callback, target)
先判断是否存在key为key,的CallbackList对象,如果不存在就创建一个.
然后将 callback,target加入到 的CallbackList对象中.hasEventListener(key, callback, target)
判断key为key的CallbackList对象是否包含callback,target.removeAll (keyOrTarget)
根据 key 或者 target 删除 CallbackList对象.
如果 CallbackList对象 处于调用中(isInvoking == true).则取消里面所有的回调.
当离开调用时(isInvoking == false),会自动删除callbacks为null.remove (key, callback, target)
删除指定的一个,类似3
c. CallbacksInvoker
CallbacksInvoker 继承 CallbacksHandler, 主要包含invoke方法.
调用 key为key 的CallbackList对象中的所有回调函数.