platform下的js分析_2

目录

主要包含 url.js utils.js requiring-frame.js attribute.js CCMacro.js CCSys.js CCScreen.js CCVisibleRect.js callbacks-invoker.js

url.js

  1. normalize (url)
    删除 url前面的 './' 或者 '/'

  2. raw (url)
    返回 一个 'resources/' 开头的路径

utils.js

  1. contains (refNode, otherNode)
    主要分为两种情况:
    case1: dom下的Node
    case2: cocos里面的Node
    cocos下的 Node 包含,主要是判断 otherNode 是否是 refNode的子节点.

  2. isDomNode
    判断是否是 dom 下的 Node

  3. callInNextTick(callback, p1, p2)
    下一次 tick 的时候 调用 callback

requiring-frame.js

cc._RF 类似栈.  包含 push pop peek 方法. 
TODO 作用是什么???

attribute.js

  1. createAttrsSingle (owner, ownerCtor, superAttrs)
    给 owner 添加 attrs 属性, 属性值为一个 继承自 superAttrs.constructor 的对象实例.

  2. createAttrs (subclass)
    前提要求 subclass 本身不包含 attrs 属性.
    会检查 subclass 的整个原型链,如果某个原型链上的对象不包含 attrs 属性,则会根据父对象,添加上 attrs 属性.
    最后 给 subclass 添加上 attrs 属性. 然后返回 subclass.__attrs__.

  3. attr (ctor, propName, newAttrs)
    case1: 如果 newAttrs 为 undefined,则会返回 ctor属性中的 attrs 组成的对象. 相当于 get
    case2: 如果 newAttrs 是对象,则会 将 newAttrs 里面的key value,复制到 ctor.__attrs__.prototype 中. 相当于 set

  4. getClassAttrs (ctor)
    如果 ctor 包含 attrs 属性,则直接返回此属性,否则就为ctor创建 attrs 属性

  5. getClassAttrsProto (ctor)
    返回 ctor.__attrs__.prototype

  6. setClassAttr (ctor, propName, key, value)
    给 ctor.__attrs__.prototype 设置 key,value. 其中key为 propName + DELIMETER + key

  7. getTypeChecker (type, attrName)
    TODO 返回一个检查 function (constructor, mainPropName){} 函数. 用于类型检查??

  8. 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 下无效.

  1. fullScreen()
    返回当前是否是全屏状态.

  2. requestFullScreen(element, onFullScreenChange)
    请求全屏模式

  3. exitFullScreen(element)
    退出全屏模式

  4. 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 变量.

主要包含的方法:

  1. removeBy (array, value)
    删除 array中 所有元素值为 value 的元素.
    例如:
this.removeBy(this.callbacks , null);

会删除 this.callbacks 中,所有的 null.

  1. cancel (index)
    取消 索引为 index 的回调.

  2. cancelAll()
    取消所有的回调

  3. purgeCanceled()
    删除所有为null的回调

b. CallbacksHandler
包含一组 (key:CallbackList) 这样的一个对象.
此对象包含一组方法,对 (key:CallbackList) 进行操作.

如:

  1. add(key, callback, target)
    先判断是否存在key为key,的CallbackList对象,如果不存在就创建一个.
    然后将 callback,target加入到 的CallbackList对象中.

  2. hasEventListener(key, callback, target)
    判断key为key的CallbackList对象是否包含callback,target.

  3. removeAll (keyOrTarget)
    根据 key 或者 target 删除 CallbackList对象.
    如果 CallbackList对象 处于调用中(isInvoking == true).则取消里面所有的回调.
    当离开调用时(isInvoking == false),会自动删除callbacks为null.

  4. remove (key, callback, target)
    删除指定的一个,类似3

c. CallbacksInvoker
CallbacksInvoker 继承 CallbacksHandler, 主要包含invoke方法.
调用 key为key 的CallbackList对象中的所有回调函数.

猜你喜欢

转载自www.cnblogs.com/daihanlong/p/10328629.html
今日推荐