Cocos2d采用类似于Dom tree的那种形式来各个部分组织起来。最基本的基类是Node吧,

Node

Node 作为基类,函数很多,我觉得可以分为如下几类,树相关的函数, 一些公共的比较实用的函数, 需要子类实现的接口,还有属性的get, set函数

既然是树,首先要提供子节点的add, insert, remove, get这一大类函数.

作为一个最基本的绘图单元,要考虑scale, rotation, translate, position, BoundingBox这些作为基本几何的属性吧, Zorder 前后的遮挡关系也需要考虑的。 Node里面还有俩个属性,一个是tag, 便于标示和选择Node, 另外一个是userdata, 可以放些附加的数据在这边.

然后就是 把节点给画出来。draw 和visit这两个函数就是干这个的。visit负责去调用子节点的draw和自己的draw函数来把整个树给画出来。在visit这个函数里面 画的时候,考虑了zorder的问题。子类继承的时候,最重要的就是这个draw 函数了吧。:)

Node 还提供了onEnter, OnExit等通知回调函数,在screne 进入和退出的时候会调这个。当子节点被删除的时候会去通知它. 我觉得 从就接口上开说,子类要实现的就是draw, onEnter*, onExit*, update, 这几个函数。

Node提供了一些实用的函数, 为了便于子类的操作,Node还把ActionManager, Scheduler这两个的功能集成了进来。提供了一些接口给子类调用, 这些接口其实就是调用actionManager和schedulerManager 的方法的

子类派生关系

screne

screne很简单,基本上没对Node添加啥功能,它的子类CCTransition, CCTransitionPageDown, CCTransitionProgress提供一些场景切换的效果。

layer

Layer层主要添加了事件处理, 在onEnter的时候把自己注册到touch, mouse, keyboard, accelerometer的dispatcher里面。 在onExit的时候,取消注册:)

menu

menu添加对了子类的align, 并且添加了方法_itemForTouch检测mouse 和touch 这个事件在哪个控件上,然后把事件dispatch到 它上。

spirte

Spirte这个管理了一个texture, 还有bacthMode上的优化。

cocos2d-html5 笔记3: Node的更多相关文章

  1. Cocos2d html5 笔记 1: overview

    昨天接触到了cocos2d-html5的的东东了, 第一次看其源代码一头雾水,幸好samples目录下面有几个例子,可以从这个入手. MoonWarriors是一个射击类的游戏, 有点像以前玩的雷电, ...

  2. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  3. HTML5笔记3——Web Storage和本地数据库

    上一篇:HTML5笔记2——HTML5音/视频标签详解 Web Storage概述 在HTML5中,除了Canvas元素之外,另一个新增的非常重要的功能是可以再客户端本地保存数据的Web Storag ...

  4. 笔记:Node.js 的 Buffer 缓冲区

    笔记:Node.js 的 Buffer 缓冲区 node.js 6.0 之前创建的 Buffer 对象使用 new Buffer() 构造函数来创建对象实例,但权限很大,可以获得敏感信息,所以建议使用 ...

  5. node的重点学习笔记(1)————node

    node的重点学习笔记(1)----node 提到node就必须提一下他的npm了,npm是世界上最大的开放源代码的生态系统.通俗来说这就如同亚马逊丛林,要啥物种有啥物种,一个巨大的生态圈,里面有一堆 ...

  6. PhantomJS笔记,Node.js集成PhantomJS

    PhantomJS笔记,Node.js集成PhantomJS 转 https://www.linchaoqun.com/html/cms/content.jsp?menu=index&id=1 ...

  7. COCOS2D 学习笔记

    cc.Node.scheduleUpdate:function () * schedules the "update" method.                       ...

  8. css3 和 html5 笔记

    1.css3 ie下大部分不兼容 ie9以下 浏览器低版本不兼容 需要写 -webket-transition:1s -moz-transition: 1s -o-transition:1s tran ...

  9. Html5笔记 表格 布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. bundle install rake-10.4.2

    这个是由于被墙了的原因,提供一个不用FQ解决的方法 淘宝做了一个gem镜像,地址是http://ruby.taobao.org/  为什么有这个? 由于国内网络原因(你懂的),导致 rubygems. ...

  2. 使用Log.isLoggable方法

    在Audio Debug过程中想打开AudioService.java文件中的log,比如想打开setmode这段log: if (DEBUG_MODE) { Log.v(TAG, "set ...

  3. 编辑器CocoStudio和CocosBuilder的对比

    来源:http://4137613.blog.51cto.com/4127613/1352805   CocosBuilder CocoStudio 控件种类 支持大部分cocos2d-x自带的常用控 ...

  4. php 的简单易用的调式方法,打印方法

    简单的调试方法:echo, print_r, var_dump, exit, debug_backtrace(), debug_print_backtrace(), gettype(), get_cl ...

  5. -ms-viewport的问题

    Windows 8 中的 Internet Explorer 10 和 Windows Phone 8 Internet Explorer 10 doesn't differentiate devic ...

  6. MYSQL数据库性能调优之八:mysql日志

    MySQL日志 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志.中继日志: 使用 SHOW GLOBAL VARIABLES LIKE '%log%';  查询所有日志配置详情: 一. ...

  7. Tagged Pointers

    [Tagged Pointers] 1.what is tagged pointer? 2.原理剖析

  8. C# rmi例子

    接口定义 实体定义,注意需要序列化 using System; namespace Interface { [Serializable] public class DataEntity { publi ...

  9. hdu 2819 Swap

    Swap http://acm.hdu.edu.cn/showproblem.php?pid=2819 Special Judge Problem Description Given an N*N m ...

  10. HDU1963Investment(DP)

    简单DP,题解见代码