platform下的js分析_2

2023-05-16

目录

  • 主要包含 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

  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对象中的所有回调函数.

转载于:https://www.cnblogs.com/daihanlong/p/10328629.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

platform下的js分析_2 的相关文章

随机推荐

  • MySQL中删除操作Delete、Truncate、Drop用法比较

    1 执行速度比较 Delete Truncate Drop关键字都可以删除数据 drop gt truncate gt delete 2 原理方面 2 1 delete delete 属于数据库 DML 操作语言 xff0c 只会删除数据表
  • floating IP 原理分析 - 每天5分钟玩转 OpenStack(107)

    上一节我们通过 Web UI 创建为 cirros vm3 分配了浮动 IP xff0c 今天将分析其工作原理 首先查看 router 的 interface 配置 xff1a 可以看到 xff0c floating IP 已经配置到 ro
  • linux移动硬盘挂载错误,suse挂载移动硬盘出错

    suse挂载移动硬盘出错 发布时间 2008 04 29 11 46 54来源 红联作者 Dnirta 刚刚挂移动硬盘想装个东西 xff0c 结果盘符出来了 xff0c 却打不开 有提示 root 64 localhost mount t
  • 【webapp的优化整理】要做移动前端优化的朋友进来看看吧

    单页or多页 本文仅代表个人观点 xff0c 不足请见谅 xff0c 欢迎赐教 webapp 小钗从事单页相关的开发一年有余 xff0c 期间无比的推崇webapp的网站模式 xff0c 也整理了很多移动开发的知识点 xff0c 但是现在回
  • Dell的Linux服务器开机按F1解决方法

    最近买了些二手服务器 xff0c dell品牌 xff0c 性价比还不错 xff0c 但是一台dell 服务器开机总是提示按F1才能进系统 到底应该怎么解决呢 xff1f 请问我的电脑开机老是提示 strike the f1 key to
  • ADB 操作命令详解及用法大全

    一 ADB是什么 xff1f ADB xff0c 即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具 xff0c 它可为各种设备操作提供便利 xff0c 如安装和调试应用 xf
  • 在OpenResty中使用淘宝的concat进行css和js合并,同时支持GZIP静态压缩

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • cygwin64安装wget和apt-cyg

    说实话 xff0c 网上的教程要么不适用 xff0c 要么不能用 xff0c 唯有多次试错之后才杀出一条血路 1 安装cygwin 2 勾选wget 这个如果忘记勾选了 xff0c 就再次打开setup exe 选择如下操作 xff0c 即
  • React系列——websocket群聊系统在react的实现

    前奏 这篇文章仅对不熟悉在react中使用socket io的人 以及websocket入门者有帮助 下面这个动态图展示的聊天系统是用react 43 express 43 websocket搭建的 xff0c 很模糊吧 xff0c 要得就
  • JNA 实际开发中若干问题解决方法(二)

    1 JNA 中 byte 类型映射问题 在之前的文章中 xff0c 我们知道 JNA 中 xff0c char 和 char 类型都可以映射为 byte 类型 xff0c 通常来说也就是 byte 具有通用性 在实际开发中 xff0c 我们
  • 独家解读 | 智能驾驶视觉技术领域四类供应商及其商业化路径

    9 月 3 日 xff0c 雷锋网新智驾正式对外发布了 2018 智能驾驶视觉技术行业研究报告 xff0c 对智能驾驶技术感兴趣的读者可加入 新智驾会员计划 免费阅读本报告 xff0c 也可以通过官方渠道单独购买后进行查阅 首份报告发布两天
  • MySQL存储过程与存储函数

    1 创建存储过程 存储过程就是一条或者多条 SQL 语句的集合 xff0c 可以视为批文件 它可以定义批量插入的语句 xff0c 也可以定义一个接收不同条件的 SQL 创建存储过程的语句为 create procedure xff0c 创建
  • Vue+SpringBoot实现增删改查

    Vue 43 Spring boot Vue前端 Vue新建项目 当前我是用的是vue脚手架3 4 1版本 github地址 xff1a github com liangcongco vue create vue demo 新建项目 spa
  • 一例关于无法删除VMware虚拟机文件的案例

    关键字 xff1a VMware ESXi 虚拟机 操作背景 xff1a 由于运维不当导致一台虚拟机挂掉 xff0c 期望删除该VM的文件夹 xff0c 但从vCenter界面或者用指令界面 xff0c 均提示无法删除 xff0c 文件被占
  • PS安装扩展面板提示无法加载,因为它未经正确签署解决方法(适用于Mac/Win)

    最近发现好多小伙伴在使用Photoshop Mac端或者win端安装ps扩展面板时 总会遇到Photoshop错误提示无法加载 因为它未经正确签署 今天小编就和大家分享解决Mac Win端ps扩展面板提示无法加载 因为它未经正确签署解决方法
  • FTP连接不上的解决方法

    1 注意内网IP和外网IP 2 检查ftp服务是否启动 xff08 面板首页即可看到 xff09 3 检查防火墙20端口 ftp 21端口及被动端口39000 40000是否放行 xff08 如是腾讯云 阿里云等还需检查安全组 xff09
  • Arduino和C51开发OLED显示屏

    技术 xff1a 51单片机 Arduino OLED显示屏 U8glib 概述 OLED显示屏常常用作为智能产品的显示设备 xff0c 本文简单介绍OLED显示屏的使用方法 详细 代码下载 xff1a http www demodashi
  • mac 查看 本地网络代理

    networksetup listallnetworkservices 转载于 https www cnblogs com yshuai p 7813258 html
  • 常用的ROS命令

    在这里记一下 xff0c 以免以后忘记了 打开ros master xff1a roscore 查看topic列表 xff1a rostopic list v 打印topic内容 xff1a rostopic echo topic 将bag
  • platform下的js分析_2

    目录 主要包含 url js utils js requiring frame js attribute js CCMacro js CCSys js CCScreen js CCVisibleRect js callbacks invok