对于cc.Node我分了四个模块学习: 1、场景树,2、事件响应,3、坐标系统,4、Action的使用;在此记录经验分享给大家。

场景树

1: creator是由一个一个的游戏场景组成,通过代码逻辑来控制场景跳转;
2: creator场景是一个树形结构;
3: 父节点, 子节点;
4: cc.Node就是场景树中的节点对象;
5: 每个节点只要在场景里面,所以任何一个节点都是一个cc.Node;

cc.Node属性

1: name: 获取节点的名字;
2: active: 设置节点的可见性;
3: position: 相对坐标,参照物是父亲节点;
4: rotation: 旋转,顺时针为正, 数学逆时针为正;
5: scale: 缩放;
6: anchor: 锚点, 左下角(0, 0), 右上角(1, 1) 可以超过这个范围;
7: Size: 大小;
8: Color: 环境颜色;
9: Opacity: 透明度,
10: Skew: 扭曲;
11: Group: 分组;
12: parent: 父亲节点的cc.Node;
13: children/childrenCount: 子节点的数组;
14: tag : 节点标签;

cc.Component

1:所有的组件都扩展自cc.Component(类, 构造函数);
2:每个cc.Component组件实例都有个成员node,指向它关联节点的cc.Node;
3: name: 每一个cc.Component组件通过name属性可以获得节点的名字;

4: 组件实例入口函数:

   onLoad: 在组件加载的时候调用;
  start: 组件第一次激活前, 调用在第一次update之前;
  update(dt): 每次游戏刷新的时候调用;

  lateUpdate(dt): 在update之后调用;
  enabled:组件是否被启动;

  onEnable: 组件启用的时候调用;
  onDisable: 组件禁用的时候调用;

代码组件

1:每个代码组件实例都继承自cc.Component(构造函数),所以有一个node数据成员指向cc.Node;
2: cc.Class({...}) 定义导出了一个新的类的构造函数,它继承自cc.Component;
3: 当为每个节点添加组件的时候,会实例化(new)这个组件类,生成一个组件实例;(js语法new)
4: 当组件加载运行的时候,代码函数里面的this指向这个组件的实例;
5: 代码组件在挂载的时候扩展自cc.Component, 里面有个成员node会指向节点(cc.Node);
所以在代码组件里面,可以使用this.node来访问这个组件实例说挂载的节点对象;
6: 代码里访问cc.Node总要属性;

cc.Node场景树相关方法

1: 代码中创建一个节点new cc.Node();
1: addChild 加一个子节点;
2: removeFromParent/ removeAllChildren;
3: setLocalZOrder/ 绘制顺序, 在下面的会绘制在屏幕的上面;
4: 遍历节点的子节点;
5: setPosition/getPosition,;
6: getChildByName/getChildByTag, getChildByIndex;
7: cc.find(): 按层次结构路径查找节点,路径区分大小写;

     console.log(this);
console.log("this.onLoad"); // 代码里面怎么找到节点?
// 指向这个组件实例所挂载的节点
console.log('node:',this.node);
console.log('node.name:',this.node.name);
console.log('node.active:',this.node.active);
console.log('node.x:%f,node.y:%f,node.position:%O',this.node.x, this.node.y, this.node.position);
console.log('group:%O,index:%d',this.node.group, this.node.groupIndex);
if (this.node.parent) {
console.log("go if @ node.parent.name is:%s", this.node.parent.name);
}
else {
// console.log(this.node.parent);
console.log("go else @ no parent");
} // 孩子
var children = this.node.children; // [cc.Node, cc.Node, cc.Node]
for(var i = 0; i < children.length; i ++) {
console.log('node.children.name:',children[i].name);
}
// end console.log("node.childrenCount:", this.node.childrenCount); // 查找,局部查找
var item = this.node.getChildByName("item1");
console.log('局部查找 item.name:', item.name); // 全局, 时间消耗,对于编写通过用的模块
item = cc.find("Canvas/parent/item1");
console.log("全局查找 cc.find>item.name:", item.name);
// end var pos = item.getPosition(); // 相对位置
console.log("item.x:%f,item.y:%f", pos.x, pos.y);
pos = cc.p(100, 100); // cc.Vec,
item.setPosition(pos);
var posNew = item.getPosition(); // 相对位置
console.log("posNew x:%f, y:%f", posNew.x, posNew.y); var item2 = this.node.getChildByName("item2");
item2.setLocalZOrder(100);

cc.Node—场景树的更多相关文章

  1. Cocos2d-JS场景树

    场景树概念(Scene Graph) 场景树是Cocos2d-JS中用来管理场景中所有元素的一个数据结构,场景树之所以被称为一棵树是因为它将一个场景的所有子结点以树状图的形式组织在一起. Cocos2 ...

  2. <7>Cocos Creator 节点 cc.Node

    1.简介 节点(cc.Node)是渲染的必要组成部分.所有需要在游戏场景中显示的内容都必须是节点或者依附于节点之上.节点负责控制显示内容的位置.大小.旋转.缩放.颜色等信息. 2.节点属性 1: na ...

  3. <4>Cocos Creator基本概念(场景树 节点 坐标 组件 )

    1.场景树 Cocos Creator是由一个一个的游戏场景组成,场景是一个树形结构,场景由 有各种层级关系的节点(下一节有具有介绍)组成: 如创建一个HelloWorld的默认项目NewProjec ...

  4. cc.Node—事件响应

    触摸事件1: 触摸事件类型: START, MOVED, ENDED(物体内), CANCEL(物体外);2: 监听触摸事件: node.on(类型, callback, target(回掉函数的th ...

  5. cc.Node 的坐标空间与ACTION的学习

    1.创建二维的向量坐标 //创建向量坐标方法一 let new_pos1 = new cc.Vec2(100, 100); //创建向量坐标方法二 let new_pos2 = cc.v2(200, ...

  6. Cocos Creator cc.Node.点击事件

    触摸事件 1.触摸事件的类型:START触摸启动,MOVED移动,ENDED弹起来,CANCEL取消; ENDED和CANCEL区别是ENDED物体内弹起来,CANCEL是在物体外范围弹起. 2.监听 ...

  7. cc.Node—坐标系统

    cc.Vec21: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量;2: cc.pSub: 向量相减 ...

  8. cc.Node—Action

    1: Action类是动作命令,我们创建Action,然后节点运行action就能够执行Action的动作; 2: Action分为两类: (1) 瞬时就完成的ActionInstant, (2) 要 ...

  9. HCW 19 Team Round (ICPC format) B. Beggin' For A Node(树的重心,交互题)

    B. Beggin' For A Node time limit per test2.0 s memory limit per test256 MB inputstandard input outpu ...

随机推荐

  1. HDU4267 树状数组 不连续区间修改(三维)

    A Simple Problem with Integers                                  Problem Description Let A1, A2, ... ...

  2. OC学习篇之---类的初始化方法和点语法的使用

    昨天介绍了OC中类的定义和使用:http://blog.csdn.net/jiangwei0910410003/article/details/41657603,今天我们来继续学习类的初始化方法和点语 ...

  3. ASP.NET调用存储过程并接收存储过程返回值

    ASP.NET调用存储过程并接收存储过程返回值 2010-08-02 11:26:17|  分类: C#|字号 订阅       2010年02月27日 星期六 23:52 假设表结构Create T ...

  4. luogu 1080 国王游戏

    题目大意: 有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数 求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个) 思路: 非常简单,可以根据它对后 ...

  5. bzoj2115 [Wc2011] Xor——高斯消元 & 异或线性基

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2115 异或两次同一段路径的权值,就相当于没有走这段路径: 由此可以得到启发,对于不同的走法, ...

  6. ubuntu16.04 查看系统可用内存

    free -m 查看内存情况    (单位MB) mem 行显示了从系统角度看来内存使用的情况, total是系统可用的内存大小, 数量上等于系统物理内存减去内核保留的内存. buffers和cach ...

  7. JAVA接口和抽象类的特点

    接口的特点: 1:接口不可实例化,可结合多态进行使用(接口 对象=new 对象()) 2:接口里的成员属性全部是以 public(公开).static(静态).final(最终) 修饰符修饰 3:接口 ...

  8. React实战之60s倒计时按钮(发送短信验证按钮)

    React实战之60s倒计时按钮——短信验证按钮 导入:(antd组件——Form表单) import { Button, Form, Input } from 'antd'; const FormI ...

  9. ASP.NET GridView 控件绑定 CheckBoxList

    需求:设计这样一个页面,在页面上可以自由选择和展示各省份下城市? 思路:一次性查询出所需的记录(查询数据库的操作不宜写到 C# 代码的循环语句中),并保存到全局变量中,之后根据条件过滤出需要的.可以在 ...

  10. 367 Valid Perfect Square 有效的完全平方数

    给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False.注意:不要使用任何内置的库函数,如  sqrt.示例 1:输入: 16输出: True示例 ...